:root{--bg: #f3f1ec;--paper: #fbfaf7;--card: #ffffff;--ink: #1c1b19;--muted: #6b675f;--line: #d8d4cb;--line-strong: #b9b3a8;--accent: #2f3a33;--accent-2: #4a5c50;--warn: #8a4b2a;--ok: #2d5a45;--err: #8b2e2e;--chip: #ece9e2;--shadow: 0 1px 0 rgba(28, 27, 25, .04), 0 8px 24px rgba(28, 27, 25, .06);--radius: 10px;--font: "IBM Plex Sans", "Helvetica Neue", sans-serif;--serif: "IBM Plex Serif", Georgia, serif;--pad: 16px}*,*:before,*:after{box-sizing:border-box}html,body,#root{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;height:100%;line-height:1.45;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.app-shell{display:flex;flex-direction:column;min-height:100%}.topbar{align-items:center;background:var(--paper);border-bottom:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding:10px var(--pad);position:sticky;top:0;z-index:20}.brand{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px 14px;min-width:0}.brand h1{font-family:var(--serif);font-size:1.05rem;font-weight:600;letter-spacing:-.02em;margin:0}.brand .section{color:var(--muted);font-size:.82rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.nav{display:flex;gap:4px}.nav a,.nav button.linkish{background:transparent;border:0;border-radius:999px;color:var(--muted);padding:6px 12px;text-decoration:none}.nav a.active,.nav a:hover{background:var(--chip);color:var(--ink)}.user-menu{align-items:center;display:flex;gap:8px}.user-menu span{color:var(--muted);display:none;font-size:.85rem}@media(min-width:720px){.user-menu span{display:inline}}.page{margin:0 auto;max-width:1280px;padding:16px var(--pad) 48px;width:100%}.notice{background:#eae7e0;border-radius:var(--radius);color:#3f3d38;font-size:.9rem;margin-bottom:14px;padding:12px 14px}.filters{display:grid;gap:10px;margin-bottom:12px}@media(min-width:900px){.filters{grid-template-columns:repeat(4,minmax(0,1fr)) 1.4fr auto}}.field label,.lbl{color:var(--muted);font-size:.75rem;font-weight:500;letter-spacing:.02em}.field input,.field select,.field textarea,.input,.select{appearance:none;background:var(--card);border:1px solid var(--line-strong);border-radius:8px;color:var(--ink);padding:9px 11px;width:100%}.field textarea{min-height:88px;resize:vertical}.pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.pill{background:var(--chip);border:0;border-radius:999px;color:var(--ink);font-size:.82rem;padding:6px 11px}.pill.active{background:var(--accent);color:#f7f5f0}.pill .n{color:inherit;font-weight:600;margin-left:4px;opacity:.85}.cards{display:flex;flex-direction:column;gap:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:14px 14px 12px}.card-top{color:var(--muted);font-size:.78rem;font-variant-numeric:tabular-nums;letter-spacing:.04em}.card h2{font-size:1.02rem;font-weight:600;margin:2px 0 0}.card .cat{color:var(--muted);font-size:.82rem;margin:0 0 8px}.card .title{font-size:1.02rem;font-weight:600;margin:0 0 6px}.card .desc,.card .meta{color:#3a3833;font-size:.92rem;margin:0 0 8px}.card .meta{color:var(--muted)}.table-wrap{display:none}@media(min-width:960px){.cards{display:none}.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:12px;display:block;overflow:auto}table.register{border-collapse:collapse;width:100%}table.register th,table.register td{border-bottom:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}table.register th{background:var(--paper);color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}table.register tbody tr{cursor:pointer}table.register tbody tr:hover{background:#f7f5f1}table.register .code{color:var(--muted);font-size:.82rem;font-variant-numeric:tabular-nums;white-space:nowrap}table.register .task-title{font-weight:600}a.task-title,button.task-title{background:none;border:0;color:inherit;cursor:pointer;font:inherit;font-weight:600;padding:0;text-align:left;text-decoration:underline;text-underline-offset:.12em}table.register .col-status{min-width:12rem;white-space:nowrap;width:15%}}.btn{background:var(--accent);border:0;border-radius:8px;color:#f7f5f0;font-weight:500;padding:9px 14px}.btn:disabled{opacity:.55}.btn.ghost{background:transparent;border:1px solid var(--line-strong);color:var(--ink)}.btn.danger{background:var(--err)}.btn.small{font-size:.85rem;padding:6px 10px}.status-select{width:100%}.badge{border-radius:999px;display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.02em;padding:3px 8px;white-space:nowrap}.badge.pri-LOW{background:#ece9e2}.badge.pri-MEDIUM{background:#e4e8df}.badge.pri-HIGH{background:#efe1d2}.badge.pri-URGENT{background:#ead8d4}.login{align-items:center;display:flex;justify-content:center;min-height:100%;padding:24px}.login-card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);max-width:400px;padding:28px 24px;width:100%}.login-card h1{font-family:var(--serif);font-size:1.35rem;font-weight:600;margin:0 0 6px}.login-card p{color:var(--muted);margin:0 0 20px}.login-card .field{margin-bottom:12px}.login-card .btn{margin-top:8px;width:100%}.err{color:var(--err);font-size:.9rem}.drawer-backdrop{background:#1c1b1959;inset:0;position:fixed;z-index:40}.drawer{background:var(--paper);display:flex;flex-direction:column;inset:0;overflow:auto;position:fixed;z-index:50}@media(min-width:860px){.drawer{border-left:1px solid var(--line);box-shadow:-12px 0 40px #1c1b191f;inset:0 0 0 auto;width:min(560px,100%)}}.drawer-head{align-items:flex-start;background:var(--paper);border-bottom:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding:14px 16px;position:sticky;top:0}.drawer-body{display:flex;flex-direction:column;gap:18px;padding:16px}.section-title{font-size:.75rem;font-weight:600;letter-spacing:.08em;margin:0 0 8px;text-transform:uppercase}.note{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:8px;padding:10px 12px}.note time{color:var(--muted);font-size:.78rem}.file-row img{border-radius:6px;height:44px;object-fit:cover;width:44px}.toast{background:var(--accent);border-radius:8px;color:#f7f5f0;padding:10px 14px}.toast.err{background:var(--err);color:#fff}.empty{color:var(--muted);padding:32px 8px;text-align:center}.toolbar{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-bottom:12px}.grid-2{display:grid;gap:10px}@media(min-width:640px){.grid-2{grid-template-columns:1fr 1fr}}.checkbox{align-items:center;display:flex;gap:6px}.filter-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.muted{color:var(--muted)}.field{display:flex;flex-direction:column;gap:4px}.drop{background:var(--card);border:1px dashed var(--line-strong);border-radius:10px;color:var(--muted);padding:16px;text-align:center}.file-row{align-items:center;background:var(--card);border:1px solid var(--line);border-radius:10px;display:flex;gap:10px;margin-bottom:8px;padding:8px 10px}.toast-stack{bottom:80px;display:flex;flex-direction:column;gap:8px;position:fixed;right:16px;z-index:80}.code,.card-top{color:var(--muted);font-variant-numeric:tabular-nums}.overdue{color:var(--warn);font-weight:600}.badge{background:var(--chip);border-radius:999px;font-size:.72rem;font-weight:600;padding:3px 8px}.task-title{font-weight:600}a.task-title,button.task-title{background:none;border:0;color:inherit;cursor:pointer;font:inherit;font-weight:600;padding:0;text-align:left;text-decoration:underline;text-underline-offset:.12em}.meeting-card{cursor:pointer}@media(max-width:959px){.table-wrap{display:none}}.feedback-dock{align-items:flex-end;bottom:16px;display:flex;flex-direction:column;gap:10px;position:fixed;right:16px;z-index:90}.feedback-fab{align-items:center;background:#fee;border:0;border-radius:999px;box-shadow:0 2px 10px #1c1b1929;color:#f97316;display:flex;height:52px;justify-content:center;width:52px}.feedback-fab:hover{background:#fff7ed}.feedback-panel{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;padding:12px;width:min(360px,calc(100vw - 32px))}.feedback-panel-head{align-items:center;display:flex;justify-content:space-between}.feedback-panel-head h2{font-family:var(--serif);font-size:1rem;font-weight:600;margin:0}.feedback-context{color:var(--muted);font-size:.8rem;margin:0}.feedback-kinds{margin-bottom:0}.products-toolbar{align-items:stretch;flex-wrap:wrap}.product-view-toggle{display:flex;gap:6px}.btn.ghost.active{background:var(--chip);border-color:var(--accent-2)}.product-filters{grid-template-columns:1fr}@media(min-width:720px){.product-filters{grid-template-columns:repeat(3,minmax(0,1fr)) 1.6fr}}.product-pills{align-items:center}.product-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.product-card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);cursor:pointer;min-width:0;overflow:hidden}.product-card:hover{border-color:var(--line-strong);transform:translateY(-1px)}.product-card.is-component{border-left:4px solid var(--line-strong)}.product-image,.product-image-placeholder{aspect-ratio:4 / 3;background:var(--paper);border-bottom:1px solid var(--line);display:block;object-fit:contain;width:100%}.product-image-placeholder{align-items:center;color:var(--line-strong);display:flex;justify-content:center}.product-card-body{padding:13px 14px 14px}.product-card-kicker{color:var(--muted);display:flex;font-size:.76rem;font-weight:600;justify-content:space-between;letter-spacing:.04em;text-transform:uppercase}.product-card h2{font-size:1rem;margin:5px 0 3px}.product-card p{margin:3px 0}.product-parent{color:var(--muted);font-size:.8rem}.product-card-bottom{align-items:center;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:space-between;margin-top:12px;padding-top:10px}.product-card-bottom .product-status-select{max-width:150px}.product-table-wrap{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:auto}.product-table{border-collapse:collapse;min-width:1180px;width:100%}.product-table th,.product-table td{border-bottom:1px solid var(--line);padding:9px 10px;text-align:left;vertical-align:middle}.product-table th{background:var(--paper);color:var(--muted);font-size:.7rem;font-weight:600;letter-spacing:.05em;position:sticky;text-transform:uppercase;top:0;white-space:nowrap;z-index:2}.product-table tbody tr{cursor:pointer}.product-table tbody tr:hover{background:#f7f5f1}.product-table .component-row{background:#faf9f6}.product-table-image,.product-table .product-image-placeholder{aspect-ratio:1;border:1px solid var(--line);border-radius:6px;height:42px;object-fit:contain;width:42px}.product-table .product-image-placeholder{border-bottom:1px solid var(--line)}.product-code,.product-cost{font-variant-numeric:tabular-nums;white-space:nowrap}.product-code{color:var(--muted);font-size:.82rem}.product-title{background:transparent;border:0;color:inherit;font:inherit;font-weight:600;padding:0;text-align:left;text-decoration:underline;text-underline-offset:.12em}.component-mark{color:var(--muted);margin-right:6px}.product-parent-line{font-size:.76rem}.product-status-select{min-width:130px;padding:7px 9px}.product-drawer{width:min(680px,100%)}.product-drawer-hero{align-items:flex-start;display:grid;gap:14px;grid-template-columns:128px 1fr}.product-drawer-image,.product-drawer-hero .product-image-placeholder{aspect-ratio:1;background:var(--card);border:1px solid var(--line);border-radius:10px;height:128px;object-fit:contain;width:128px}.product-drawer-hero h2{font-size:1.2rem;margin:3px 0 4px}.product-link{align-items:center;color:var(--accent-2);display:inline-flex;font-size:.86rem;gap:4px;margin-top:5px}.product-form{display:flex;flex-direction:column;gap:12px}.product-component-list{display:flex;flex-direction:column;gap:6px}.product-component-link{align-items:center;background:var(--card);border:1px solid var(--line);border-radius:8px;display:flex;gap:10px;justify-content:space-between;padding:9px 10px;text-align:left}.product-component-link:hover{border-color:var(--line-strong)}.product-file-controls{display:grid;gap:8px;grid-template-columns:minmax(120px,.7fr) 1.3fr;margin-bottom:8px}.product-file-row{flex-wrap:wrap}.product-file-name{flex:1;min-width:180px;overflow-wrap:anywhere}.product-danger-zone{border-top:1px solid var(--line);padding-top:16px}@media(max-width:640px){.products-toolbar>.notice{flex-basis:100%!important}.product-view-toggle,.product-view-toggle .btn,.products-toolbar>.btn{flex:1}.product-drawer-hero{grid-template-columns:92px 1fr}.product-drawer-image,.product-drawer-hero .product-image-placeholder{height:92px;width:92px}.product-file-controls{grid-template-columns:1fr}}
