:root{--ink:#16202b;--ink-soft:#5b6672;--ink-faint:#8b94a0;--surface:#f4f3ee;--card:#fff;--line:#e5e2da;--line-strong:#d5d1c6;--accent:#345f88;--accent-ink:#284a6b;--accent-wash:#345f8816;--danger:#b3261e;--danger-wash:#b3261e10;--header:#1b2c41;--gold:#e8ebef;--shadow:0 1px 2px #16202b0a, 0 8px 24px #16202b0f;--radius:10px;--sync-green:#2f7d4a;--sync-amber:#c98a1a;--sync-gray:#8b94a0}*{box-sizing:border-box}html,body,#root{max-width:100%;min-height:100%;margin:0;padding:0;overflow-x:clip}body{color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased;overscroll-behavior-x:none;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.45}.mono{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.serif{font-family:Fraunces,Georgia,Times New Roman,serif}button{cursor:pointer;border:1px solid #0000;border-radius:8px;font-family:inherit;font-size:14px;transition:background .12s,border-color .12s,color .12s}.btn{background:var(--card);border:1px solid var(--line-strong);color:var(--ink);white-space:nowrap;align-items:center;gap:7px;padding:9px 14px;display:inline-flex}.btn:hover{border-color:var(--ink-soft);background:#fbfaf7}.btn svg{width:15px;height:15px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.btn.ghost{color:var(--ink-soft);background:0 0;border-color:#0000;padding:9px 10px}.btn.ghost:hover{color:var(--ink);background:#f0efe9}.btn:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}select,input[type=text],input[type=date],input[type=number],input[type=search],textarea{color:var(--ink);background:var(--card);border:1px solid var(--line-strong);border-radius:8px;outline:none;padding:9px 11px;font-family:inherit;font-size:14px;transition:border-color .12s,box-shadow .12s}select{appearance:none;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%235b6672' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:28px}select:focus,input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}.iconbtn{width:30px;height:30px;color:var(--ink-soft);background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;display:inline-flex}.iconbtn:hover{color:var(--ink);background:#eceae3}.iconbtn.del:hover{background:var(--danger-wash);color:var(--danger)}.iconbtn svg{width:16px;height:16px}.pill{background:var(--accent-wash);color:var(--accent-ink);white-space:nowrap;border-radius:20px;padding:3px 9px;font-size:11.5px;font-weight:500;display:inline-block}.pill.room{color:#3f4c59;background:#eef1f4}.badge{letter-spacing:.01em;border-radius:5px;margin:6px 6px 0 0;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge.exp{color:#a3271d;background:#fbe9e6}.badge.soon{color:#8a5a10;background:#fbeecf}.badge.review{color:#4c5b6b;background:#e9edf2}.app-chrome{z-index:45;background:var(--header);padding-top:env(safe-area-inset-top,0px);position:sticky;top:0;box-shadow:0 1px #0000001f}header.app{background:var(--header);color:#fff;flex-direction:column;gap:10px;padding:12px clamp(14px,4vw,40px) 10px;display:flex}.header-top{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.brand{flex-wrap:nowrap;align-items:center;gap:10px;min-width:0;display:flex}.brand-mark{object-fit:contain;flex-shrink:0;display:block}.brand-mark.header-mark{border-radius:0;width:28px;height:28px}.brand-mark.signin-mark{border-radius:0;width:72px;height:72px;margin:0 auto 18px}.brand-mark.empty-mark{opacity:.95;border-radius:0;width:64px;height:64px;margin:0 auto 18px}.brand h1{letter-spacing:-.01em;white-space:nowrap;margin:0;font-family:Fraunces,Georgia,serif;font-size:clamp(18px,2.4vw,24px);font-weight:500}.brand .sub{color:#9aa7b2;letter-spacing:.04em;text-transform:uppercase;font-size:12.5px}.stats{flex-wrap:nowrap;align-items:baseline;gap:18px;display:flex}.stat{flex-direction:column;line-height:1.1;display:flex}.stat .num{font-variant-numeric:tabular-nums;color:#fff;font-family:IBM Plex Mono,monospace;font-size:16px;font-weight:500}.stat .lbl{letter-spacing:.06em;text-transform:uppercase;color:#8b98a3;margin-top:2px;font-size:10px}.sync-pill{color:#d7dee5;cursor:default;background:#ffffff14;border:1px solid #ffffff1f;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:4px 9px;font-size:11.5px;display:inline-flex;position:relative}.sync-pill .dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.sync-pill.synced .dot{background:#3cb371}.sync-pill.syncing .dot{background:var(--sync-amber);animation:1.2s ease-in-out infinite pulse-dot}.sync-pill.offline .dot{background:var(--sync-gray)}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}.sync-pill .tip{width:240px;color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);z-index:20;text-transform:none;letter-spacing:0;background:#fff;border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.4;display:none;position:absolute;top:calc(100% + 8px);right:0}.sync-pill:hover .tip,.sync-pill:focus-within .tip{display:block}.user-chip{flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.user-chip .user-name{color:#d7dee5;font-size:13px;font-weight:500}.user-chip button{color:#9aa7b2;background:0 0;border:none;padding:4px 6px;font-size:12px}.user-chip button:hover{color:#fff}.toolbar{border-bottom:1px solid var(--line);background:var(--card);flex-direction:column;gap:10px;padding:10px clamp(14px,4vw,40px) 12px;display:flex}.toolbar-row{align-items:center;gap:8px;width:100%;display:flex}.search{flex:auto;min-width:0;position:relative}.search input{width:100%;padding:9px 12px 9px 34px}.search svg{width:15px;height:15px;color:var(--ink-faint);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.filters{flex-wrap:wrap;gap:8px;display:none}.filters.open{display:flex}.filter-toggle.active{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-wash)}.mobile-only-menu{display:none}.desktop-only{display:inline-flex}.menu-wrap{position:relative}.menu-dropdown{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);z-index:30;border-radius:10px;flex-direction:column;min-width:240px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.menu-dropdown button{text-align:left;color:var(--ink);background:0 0;border:none;border-radius:7px;padding:10px 12px;font-size:13.5px}.menu-dropdown button:hover{background:#f4f3ee}.menu-dropdown button.danger{color:var(--danger)}main.app-main{padding:clamp(16px,3vw,28px) clamp(16px,4vw,40px) 80px}.resultline{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:2px 2px 14px;display:flex}.resultline .count{color:var(--ink-soft);font-size:13px}.resultline .count b{color:var(--ink);font-weight:600}.clearfilters{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:4px 2px;font-size:13px}.clearfilters:hover{text-decoration:underline}.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}table.items{border-collapse:collapse;width:100%}table.items thead th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:#faf9f5;padding:12px 16px;font-size:11px;font-weight:600}table.items thead th .arrow{opacity:0;margin-left:4px;font-size:10px}table.items thead th.sorted .arrow{opacity:1}table.items thead th.num,table.items tbody td.num{text-align:right}table.items tbody td{border-bottom:1px solid var(--line);vertical-align:top;padding:13px 16px}table.items tbody tr:last-child td{border-bottom:none}table.items tbody tr{cursor:pointer;transition:background .1s}table.items tbody tr:hover{background:#faf9f4}.item-cell{align-items:flex-start;gap:12px;display:flex}.thumb{object-fit:cover;border:1px solid var(--line);background:#eceae3;border-radius:7px;flex-shrink:0;width:40px;height:40px}.itemname{color:var(--ink);font-weight:600}.itemmeta{color:var(--ink-faint);margin-top:2px;font-size:12.5px}td .val{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,monospace}.rowactions{opacity:.35;justify-content:flex-end;gap:4px;transition:opacity .1s;display:flex}tr:hover .rowactions{opacity:1}.item-cards{flex-direction:column;gap:10px;display:none}.item-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;padding:12px}.item-card-main{align-items:flex-start;gap:12px;display:flex}.item-card .thumb{border-radius:8px;width:56px;height:56px}.thumb-placeholder{border:1px solid var(--line);background:#eceae3;flex-shrink:0}.item-card-body{flex:1;min-width:0}.item-card-pills{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.item-card-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding-top:10px;display:flex}.item-card-meta{color:var(--ink-soft);flex-wrap:wrap;gap:10px;min-width:0;font-size:12.5px;display:flex}.item-card .rowactions{opacity:1;flex-shrink:0}.alerts{flex-wrap:wrap;gap:8px;margin:0 2px 14px;display:flex}.alerts .chip{background:var(--card);border:1px solid var(--line);cursor:pointer;color:var(--ink);border-radius:8px;align-items:center;gap:7px;padding:8px 13px;font-size:13px;display:inline-flex}.alerts .chip:hover{border-color:var(--ink-soft)}.alerts .chip.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-wash)}.alerts .chip .dot{border-radius:50%;width:8px;height:8px}.alerts .chip.exp .dot{background:#c0392b}.alerts .chip.soon .dot{background:#c98a1a}.alerts .chip.review .dot{background:#5a6b7d}.alerts .chip b{font-variant-numeric:tabular-nums}.summarypanel{grid-template-columns:1fr 1fr;gap:16px;margin:0 2px 18px;display:grid}.sumcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.sumcard h3{border-bottom:1px solid var(--line);background:#faf9f5;justify-content:space-between;align-items:baseline;margin:0;padding:12px 16px;font-family:Fraunces,serif;font-size:15px;font-weight:500;display:flex}.sumcard h3 .tot{color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:500}.sumcard table{border-collapse:collapse;width:100%}.sumcard td{border-bottom:1px solid var(--line);padding:8px 16px;font-size:13.5px}.sumcard tr:last-child td{border-bottom:none}.sumcard td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,monospace}.sumcard td .c{color:var(--ink-faint);margin-left:6px;font-size:12px}.sumcard .none{color:var(--ink-faint);padding:16px;font-size:13px}.sumcard .colhead{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;font-size:10.5px}.empty{text-align:center;color:var(--ink-soft);padding:70px 20px}.empty h2{color:var(--ink);margin:0 0 8px;font-family:Fraunces,serif;font-size:22px;font-weight:500}.empty p{max-width:380px;margin:0 auto 20px;font-size:14.5px}.overlay{padding:max(40px, env(safe-area-inset-top,0px)) 16px max(40px, env(safe-area-inset-bottom,0px));z-index:60;-webkit-overflow-scrolling:touch;background:#16202b6b;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--card);width:100%;max-width:680px;max-height:calc(100dvh - max(40px, env(safe-area-inset-top,0px)) - max(40px, env(safe-area-inset-bottom,0px)));border-radius:14px;flex-direction:column;animation:.16s pop;display:flex;overflow:hidden;box-shadow:0 24px 60px #16202b47}@keyframes pop{0%{opacity:0;transform:translateY(6px)scale(.99)}to{opacity:1;transform:none}}.modal header{border-bottom:1px solid var(--line);background:var(--card);color:inherit;flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal header h2{margin:0;font-family:Fraunces,serif;font-size:20px;font-weight:500}.modal .body{-webkit-overflow-scrolling:touch;flex:auto;min-height:0;padding:22px 24px;overflow-y:auto}.grid{grid-template-columns:1fr 1fr;gap:14px 18px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field.full{grid-column:1/-1}.field label{letter-spacing:.02em;color:var(--ink-soft);font-size:12px;font-weight:600}.field label .opt{color:var(--ink-faint);font-weight:400}.field input,.field select,.field textarea{width:100%}.suggest{width:100%;position:relative}.suggest input{width:100%;padding-right:34px}.suggest-toggle{width:28px;height:28px;color:var(--ink-soft);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.suggest-toggle:hover{color:var(--ink);background:#f0efe9}.suggest-menu{background:var(--card);border:1px solid var(--line-strong);box-shadow:var(--shadow);z-index:40;border-radius:8px;max-height:220px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.suggest-menu button{text-align:left;width:100%;color:var(--ink);background:0 0;border:none;border-radius:6px;padding:8px 10px;font-size:14px}.suggest-menu button:hover,.suggest-menu button.active{background:var(--accent-wash);color:var(--accent-ink)}.field textarea{resize:vertical;min-height:64px}.field.error input{border-color:var(--danger)}.prefix{position:relative}.prefix input{padding-left:24px}.prefix:before{content:"$";color:var(--ink-faint);font-size:14px;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.modal footer{border-top:1px solid var(--line);background:#faf9f5;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 24px;display:flex}.modal footer .right{gap:10px;display:flex}.modal footer .danger-text{color:var(--danger)}.gallery{flex-direction:column;gap:10px;display:flex}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;display:grid}.gallery-item{border:1px solid var(--line);aspect-ratio:1;background:#faf9f5;border-radius:10px;position:relative;overflow:hidden}.gallery-item img{object-fit:cover;cursor:zoom-in;width:100%;height:100%;display:block}.gallery-item .tag{color:#fff;background:#16202bb8;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600;position:absolute;bottom:6px;left:6px}.gallery-item .pending-tag{background:#c98a1ae6}.gallery-actions{gap:2px;display:flex;position:absolute;top:4px;right:4px}.gallery-actions button{width:26px;height:26px;color:var(--ink-soft);background:#ffffffeb;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:11px;display:inline-flex}.gallery-actions button:hover{color:var(--ink)}.gallery-actions button.del:hover{color:var(--danger)}.gallery-add{flex-wrap:wrap;gap:8px;display:flex}.lightbox{z-index:90;background:#16202be0;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.lightbox img{border-radius:8px;max-width:min(960px,100%);max-height:90vh;box-shadow:0 20px 60px #0006}.lightbox button{color:#fff;background:#ffffff1f;border:1px solid #fff3;border-radius:8px;width:40px;height:40px;position:absolute;top:18px;right:18px}.toast{background:var(--ink);color:#fff;opacity:0;pointer-events:none;z-index:80;border-radius:9px;padding:11px 18px;font-size:14px;transition:opacity .2s,transform .2s;position:fixed;bottom:22px;left:50%;transform:translate(-50%)translateY(20px);box-shadow:0 10px 30px #00000040}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.pwa-bar{z-index:70;flex-direction:column;gap:8px;max-width:280px;display:flex;position:fixed;bottom:18px;right:18px}.pwa-bar .card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:10px;padding:12px 14px;font-size:13.5px;display:flex}.pwa-bar .card button{margin-left:auto}.signin{background:radial-gradient(ellipse 80% 60% at 50% -10%, #2a4564 0%, transparent 55%), var(--surface);justify-content:center;align-items:center;min-height:100vh;padding:32px 20px;display:flex}.signin-card{background:var(--card);border:1px solid var(--line);width:100%;max-width:400px;box-shadow:var(--shadow);text-align:center;border-radius:14px;padding:40px 32px}.signin-card h1{margin:0 0 8px;font-family:Fraunces,Georgia,serif;font-size:28px;font-weight:500}.signin-card p{color:var(--ink-soft);margin:0 0 28px;font-size:14.5px}.signin-card .error{color:var(--danger);margin-bottom:14px;font-size:13px}.loading-screen{min-height:100vh;color:var(--ink-soft);justify-content:center;align-items:center;font-size:14px;display:flex}@media (width>=721px){.toolbar{flex-flow:wrap;align-items:center;padding:12px clamp(16px,4vw,40px)}.toolbar-row,.filters{display:contents}.filter-toggle{display:none!important}.search{flex:220px;min-width:180px}.item-cards,.mobile-only-menu{display:none!important}header.app{padding:14px clamp(16px,4vw,40px) 12px}.stat .num{font-size:18px}}@media (width<=720px){select,input[type=text],input[type=date],input[type=number],input[type=search],textarea,.search input,.field input,.field select,.field textarea,.suggest input{font-size:16px!important}.grid,.summarypanel{grid-template-columns:1fr}.hide-sm{display:none!important}header.app{gap:8px;padding:8px 14px}.app-chrome,.toolbar,main.app-main,.item-card,.alerts,.resultline{max-width:100%;overflow-x:clip}.alerts{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.alerts::-webkit-scrollbar{display:none}.alerts .chip{flex-shrink:0}.brand h1{font-size:17px}.brand-mark.header-mark{width:24px;height:24px}.stats{border-top:1px solid #ffffff14;gap:14px;width:100%;padding-top:2px}.stat .num{font-size:14px}.stat .lbl{font-size:9px}.toolbar{padding:8px 12px 10px}.toolbar .btn{padding:8px 10px}.desktop-only{display:none!important}.mobile-only-menu{display:block}.filters{display:none}.filters.open{grid-template-columns:1fr;width:100%;display:grid}.filters.open select{width:100%}.tablewrap{display:none!important}.item-cards{display:flex}main.app-main{padding:12px 12px calc(24px + env(safe-area-inset-bottom,0px))}.overlay{padding:calc(10px + env(safe-area-inset-top,0px)) 10px calc(10px + env(safe-area-inset-bottom,0px));align-items:stretch}.modal{max-width:none;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 20px);border-radius:12px}.modal header{padding:14px 16px}.modal header .iconbtn{width:40px;height:40px}.pwa-bar{bottom:calc(12px + env(safe-area-inset-bottom,0px));max-width:none;left:12px;right:12px}}.printdoc{display:none}@media print{@page{margin:14mm}header.app,.toolbar,.resultline,.tablewrap,.overlay,.toast,.btn,.rowactions,.alerts,.summarypanel,.pwa-bar,.no-print,.sync-pill,.user-chip{display:none!important}body{color:#000;background:#fff;font-size:11pt}main.app-main{padding:0}.printdoc{display:block!important}.printdoc .phead{border-bottom:2px solid #000;justify-content:space-between;align-items:flex-end;margin-bottom:6px;padding-bottom:10px;display:flex}.printdoc h1{margin:0;font-family:Fraunces,Georgia,serif;font-size:22pt;font-weight:500}.printdoc .pmeta{text-align:right;color:#333;font-size:9pt;line-height:1.5}.printdoc .pfilters{color:#222;margin:8px 0 4px;font-size:10pt}.printdoc .pfilters span{margin-right:14px;display:inline-block}.printdoc .pfilters b{font-weight:600}.printdoc table{border-collapse:collapse;width:100%;margin-top:8px}.printdoc th{text-align:left;text-transform:uppercase;letter-spacing:.04em;border-bottom:1.5px solid #000;padding:6px 8px;font-size:8.5pt}.printdoc td{vertical-align:top;border-bottom:.5pt solid #bbb;padding:6px 8px;font-size:9.5pt}.printdoc th.num,.printdoc td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,monospace}.printdoc tbody tr{page-break-inside:avoid}.printdoc tfoot td{border-top:1.5px solid #000;border-bottom:none;padding-top:8px;font-size:10pt;font-weight:600}.printdoc .psummaries{page-break-inside:avoid;gap:26px;margin-top:22px;display:flex}.printdoc .pgroup{flex:1}.printdoc .pgroup h2{border-bottom:1pt solid #000;margin:0 0 4px;padding-bottom:3px;font-family:Fraunces,Georgia,serif;font-size:12pt;font-weight:500}.printdoc .psum{margin-top:0}.printdoc .psum th{border-bottom:1pt solid #000;padding:4px 6px;font-size:7.5pt}.printdoc .psum td{border-bottom:.5pt solid #ccc;padding:4px 6px;font-size:9pt}.printdoc .psig{color:#555;border-top:.5pt solid #ccc;margin-top:26px;padding-top:8px;font-size:8.5pt}}
