@import"https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,600;8..60,700&family=Manrope:wght@400;500;600;700&family=JetBrains+Mono:wght@500;700&display=swap";:root{--bg: #f4efe4;--card: #fbf8f1;--ink: #1a2440;--ink-soft: #5b6178;--accent: #1f3a6d;--red: #b73a3a;--amber: #b8761c;--amber-bg: #f6e8c8;--line: #d9d2c4;--line-soft: #e7e1d3;--serif: "Source Serif 4", Georgia, serif;--sans: "Manrope", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--radius: 14px;--shadow: 0 6px 20px rgba(26, 36, 64, .07)}*{box-sizing:border-box}body{margin:0;font-family:var(--sans);color:var(--ink);background-color:var(--bg);background-image:linear-gradient(rgba(26,36,64,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(26,36,64,.04) 1px,transparent 1px);background-size:22px 22px;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--serif);font-weight:700;margin:0}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px}.app{max-width:1280px;margin:0 auto;padding:18px}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.topbar{padding:16px 20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.logo{width:44px;height:44px;border-radius:11px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:20px;flex:0 0 auto}.title-block{flex:1 1 220px;min-width:180px}.title-block h1{font-size:21px}.title-block .sub{color:var(--ink-soft);font-size:13px;margin-top:2px}.title-input{font-family:var(--serif);font-weight:700;font-size:20px;width:100%;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:#fff}.sub-input{width:100%;border:1px solid var(--line);border-radius:8px;padding:5px 10px;margin-top:4px;background:#fff}.topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:9px;font-weight:600;font-size:13px}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.danger{color:var(--red);border-color:#e3c4c4}.btn.ghost{background:transparent}.btn.sm{padding:5px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:default}.toggle{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:600}.toggle .track{width:42px;height:24px;border-radius:99px;background:#cfc7b6;position:relative;transition:background .15s}.toggle.on .track{background:var(--accent)}.toggle .knob{width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;top:3px;left:3px;transition:left .15s}.toggle.on .knob{left:21px}.tabs{display:flex;gap:8px;padding:0 20px 16px;overflow-x:auto}.tab{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 14px;font-weight:600;font-size:13px;white-space:nowrap;color:var(--ink);display:flex;gap:7px;align-items:center}.tab .num{font-family:var(--mono);font-size:11px;color:var(--ink-soft)}.tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}.tab.active .num{color:#aab4d0}.tab.add{border-style:dashed;color:var(--ink-soft)}.tab.nav{border-color:var(--line-soft)}.summary-dark{background:var(--ink);color:#fff;border-radius:var(--radius);padding:16px 18px;margin:14px 0;box-shadow:var(--shadow)}.summary-dark .head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.summary-dark .tag{font-size:10px;letter-spacing:1px;text-transform:uppercase;background:#ffffff1f;padding:3px 8px;border-radius:6px}.summary-dark h2{font-size:17px;color:#fff}.summary-dark .clock{margin-left:auto;font-family:var(--mono);display:flex;gap:6px;align-items:center}.pills{display:flex;flex-wrap:wrap;gap:8px}.pill{display:inline-flex;gap:6px;align-items:baseline;font-size:12px;background:#ffffff14;border:1px solid rgba(255,255,255,.14);padding:4px 9px;border-radius:8px}.pill b{font-family:var(--mono)}.pill .u{opacity:.7;font-size:10px}.summary-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#efe9db;border:1px solid var(--line-soft);border-radius:10px;padding:10px 14px}.summary-row .lbl{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft)}.pill.light{background:#fff;border-color:var(--line);color:var(--ink)}.pill.amber{background:var(--amber-bg);border-color:#e6d2a6;color:#6b4d12}.section{padding:22px;margin-top:4px}.section-title{font-size:26px;margin-bottom:4px}.muted{color:var(--ink-soft);font-size:13px}.dashed-sep{border:0;border-top:1px dashed var(--line);margin:16px 0}.mat-table{width:100%;border-collapse:collapse}.mat-table th{text-align:left;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft);padding:10px 8px;border-bottom:1px solid var(--line)}.mat-table td{padding:10px 8px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.mat-table .dot{color:var(--accent);margin-right:8px}.mat-table input{width:100%;border:1px solid var(--line);border-radius:7px;padding:7px 9px;background:#fff}.mat-table .num-cell{text-align:right;font-family:var(--mono);font-weight:700}.unit-chip{font-family:var(--mono);font-size:11px;background:#efe9db;border:1px solid var(--line);padding:2px 7px;border-radius:6px}.unused{color:var(--ink-soft);font-style:italic;font-size:12px}.group{margin-top:26px}.group-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.group-head h3{font-size:19px}.chip-note{font-family:var(--mono);font-size:11px;background:#efe9db;border:1px solid var(--line);padding:3px 9px;border-radius:7px;color:var(--ink-soft)}.amber-badge{margin-left:auto;font-family:var(--mono);font-size:12px;background:var(--amber-bg);border:1px solid #e6d2a6;color:#6b4d12;padding:4px 10px;border-radius:8px}.items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:14px}.item-card{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}.item-diagram{background:#fbf9f2;background-image:linear-gradient(rgba(26,36,64,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(26,36,64,.05) 1px,transparent 1px);background-size:11px 11px;padding:10px;border-bottom:1px solid var(--line-soft)}.item-body{padding:14px}.item-body h4{font-family:var(--serif);font-size:16px;margin:0 0 8px;display:flex;align-items:center;gap:8px}.field{display:flex;align-items:baseline;gap:8px;padding:5px 0;border-bottom:1px dotted var(--line-soft)}.field .k{font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-soft);min-width:64px}.field .v{font-family:var(--mono);font-weight:600}.field .v .u{font-family:var(--sans);font-weight:400;font-size:11px;color:var(--ink-soft)}.mat-tag{display:inline-flex;gap:6px;align-items:center;background:#eef1f8;border:1px solid #d6deef;color:var(--accent);padding:2px 9px;border-radius:7px;font-size:12px}.mat-tag:before{content:"•"}.item-input{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 8px;background:#fff}.item-input.sm{width:70px}.row{display:flex;gap:6px;align-items:center}.cell-list{margin-top:8px;background:#f3eee1;border-radius:8px;padding:8px}.cell-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:13px}.cell-num{width:20px;height:20px;border-radius:5px;display:grid;place-items:center;color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;flex:0 0 auto}.add-tile{border:1px dashed var(--line);border-radius:12px;display:grid;place-items:center;min-height:120px;color:var(--ink-soft);font-weight:600;background:transparent}.tip{display:flex;gap:10px;background:var(--amber-bg);border:1px solid #e6d2a6;border-left:4px solid var(--amber);border-radius:10px;padding:12px 14px;margin-top:14px}.tip textarea{width:100%;border:1px solid #e6d2a6;border-radius:7px;padding:7px;background:#fffdf7;resize:vertical}.photo-thumb{width:100%;height:160px;object-fit:cover;border-radius:8px;cursor:pointer;margin-top:8px}.footer{text-align:center;color:var(--ink-soft);font-size:12px;padding:18px;font-family:var(--mono)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:360px;max-width:100%;padding:28px}.login-card h1{font-size:22px;margin-bottom:4px}.login-card label{display:block;font-size:12px;color:var(--ink-soft);margin:14px 0 5px}.login-card input{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:#fff}.login-card .err{color:var(--red);font-size:13px;margin-top:12px}.data-table{width:100%;border-collapse:collapse;background:var(--card)}.data-table th{text-align:left;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft);padding:11px 12px;border-bottom:1px solid var(--line)}.data-table td{padding:11px 12px;border-bottom:1px solid var(--line-soft)}.data-table .mono{font-family:var(--mono)}.badge{font-size:11px;padding:2px 8px;border-radius:6px;font-weight:600}.badge.in{background:#e3eede;color:#3d5a2a}.badge.out{background:#f4dede;color:var(--red)}.badge.role{background:#eef1f8;color:var(--accent)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#141a2c8c;display:flex;align-items:center;justify-content:center;z-index:50;padding:14px}.modal{background:var(--card);border-radius:var(--radius);padding:22px;width:min(420px,100%);max-height:90vh;overflow:auto;box-shadow:var(--shadow)}.modal .row{flex-wrap:wrap}.modal .row select{min-width:0;flex:1 1 140px}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll .data-table th,.table-scroll .data-table td{white-space:nowrap}.modal h3{margin-bottom:14px}.modal label{display:block;font-size:12px;color:var(--ink-soft);margin:12px 0 5px}.modal input,.modal select{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:grid;place-items:center;z-index:60}.lightbox img{max-width:92vw;max-height:92vh;border-radius:8px}.nav-links{display:flex;gap:8px}@media (max-width: 640px){.mat-table .hide-sm{display:none}.items-grid{grid-template-columns:1fr}}@media print{.no-print{display:none!important}body{background:#fff}.item-card,.group{break-inside:avoid}}
