:root{--bg:#0b1220;--panel:#0f1a2e;--panel-2:#111f38;--muted:#8ea0c3;--text:#e7eefc;--line:#e7eefc1a;--line-2:#e7eefc24;--accent:#7cc4ff;--accent-2:#7dffcf;--warn:#ffc77c;--radius:14px;--radius-sm:10px;--shadow:0 10px 30px #00000059;--font:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";--mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font);color:var(--text);background:radial-gradient(1200px 600px at 20% -10%,#7cc4ff2e,transparent 60%),radial-gradient(900px 600px at 110% 10%,#7dffcf1f,transparent 55%),radial-gradient(1200px 700px at 40% 120%,#ffc77c1a,transparent 60%),var(--bg);margin:0}.app{grid-template-columns:330px 1fr 360px;gap:14px;height:100%;padding:14px;display:grid}.panel{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#ffffff0a,#ffffff05);min-width:0;overflow:hidden}.panel-header{border-bottom:1px solid var(--line);background:#0000001a;justify-content:space-between;align-items:center;padding:14px 14px 10px;display:flex}.panel-title{letter-spacing:.2px;align-items:center;gap:10px;min-width:0;font-weight:650;display:flex}.panel-title small{color:var(--muted);letter-spacing:0;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;overflow:hidden}.panel-body{padding:12px 14px 14px}.logo{align-items:center;gap:12px;min-width:0;display:flex}.logo-mark{border-radius:10px;width:34px;height:34px;box-shadow:0 10px 25px #7cc4ff26}.logo-mark img{object-fit:cover;border-radius:inherit;width:100%;height:100%}.logo-text{flex-direction:column;min-width:0;line-height:1.05;display:flex}.logo-text strong{letter-spacing:.3px;white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.logo-text span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.search{border-bottom:1px solid var(--line);background:#0000000f;padding:12px 14px}.search label{color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.input{border:1px solid var(--line-2);width:100%;color:var(--text);background:#0003;border-radius:12px;outline:none;padding:10px 12px;font-size:14px}.hint{color:var(--muted);margin-top:10px;font-size:12px;line-height:1.35}.list{max-height:calc(100vh - 140px);padding:10px 10px 12px;overflow:auto}.item-row{cursor:pointer;border:1px solid #0000;border-radius:12px;grid-template-columns:44px 1fr;gap:10px;padding:10px;display:grid}.item-row+.item-row{margin-top:6px}.item-row.selected{background:#7cc4ff1a;border-color:#7cc4ff40}.thumb{border:1px solid var(--line);width:40px;height:40px;font-family:var(--mono);color:#e7eefcbf;background:#ffffff0f;border-radius:10px;place-items:center;font-size:12px;display:grid}.row-top{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.name{white-space:nowrap;text-overflow:ellipsis;font-weight:620;overflow:hidden}.badge{color:#e7eefcd9;border:1px solid var(--line);white-space:nowrap;background:#00000038;border-radius:999px;padding:3px 8px;font-size:11px}.chips{color:var(--muted);flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.chip{border:1px solid var(--line);background:#00000024;border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;display:inline-flex}.chip .dot{border:1px solid var(--line);background:#e7eefc24;border-radius:3px;width:10px;height:10px}.main{flex-direction:column;min-width:0;display:flex}.detail-header{border-bottom:1px solid var(--line);background:#00000014;gap:14px;padding:16px 16px 12px;display:flex}.detail-thumb{border:1px solid var(--line);width:72px;height:72px;font-family:var(--mono);color:#e7eefcbf;background:#ffffff0f;border-radius:18px;place-items:center;display:grid}.detail-meta{flex:1;min-width:0}.detail-meta h1{letter-spacing:.2px;margin:0 0 6px;font-size:18px}.subline{color:var(--muted);flex-wrap:wrap;gap:8px;font-size:13px;line-height:1.35;display:flex}.pill{border:1px solid var(--line);color:#e7eefcdb;background:#00000024;border-radius:999px;padding:4px 10px;font-size:12px}.detail-grid{flex:1;grid-template-columns:1.2fr .8fr;gap:14px;min-height:0;padding:14px;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius-sm);background:#0000001a;min-width:0;overflow:hidden}.card-h{border-bottom:1px solid var(--line);background:#ffffff05;justify-content:space-between;align-items:center;gap:10px;padding:12px 12px 10px;display:flex}.card-h strong{letter-spacing:.2px;font-size:13px}.card-h small{color:var(--muted);font-size:12px}.card-b{padding:10px 12px 12px}.tree{font-size:13px;line-height:1.35}.node{border-radius:10px;align-items:center;gap:10px;padding:8px;display:flex}.node:hover{background:#ffffff08}.node .mini{border:1px solid var(--line);width:22px;height:22px;font-size:10px;font-family:var(--mono);color:#e7eefcbf;background:#ffffff0d;border-radius:7px;flex:none;place-items:center;display:grid}.node .label{flex:1;justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.node .label span:first-child{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.qty{color:#e7eefce6;font-family:var(--mono);border:1px solid var(--line);white-space:nowrap;background:#0000002e;border-radius:999px;flex:none;padding:2px 8px;font-size:12px}.indent{border-left:1px dashed #e7eefc1f;margin-left:18px;padding-left:10px}.totals{border-top:1px solid var(--line);flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;display:flex}.total-row{border:1px solid var(--line);background:#0000001f;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.muted{color:var(--muted)}.add-box{align-items:center;gap:10px;margin-top:12px;padding-top:12px;display:flex}.qty-input{text-align:right;width:110px;font-family:var(--mono)}.btn{color:var(--text);letter-spacing:.2px;cursor:default;white-space:nowrap;background:#7cc4ff1a;border:1px solid #7cc4ff59;border-radius:12px;padding:10px 12px;font-weight:650}.btn.secondary{border-color:var(--line);color:#e7eefce6;background:#0000001f;font-weight:600}.todo-wrap{flex-direction:column;min-height:0;display:flex}.tabs{border-bottom:1px solid var(--line);background:#0000000f;gap:8px;padding:12px 14px;display:flex}.tab{border:1px solid var(--line);color:#e7eefcdb;white-space:nowrap;background:#0000001f;border-radius:999px;padding:8px 10px;font-size:12px}.tab.active{background:#7dffcf1a;border-color:#7dffcf59}.todo{min-height:0;padding:12px 14px 14px;overflow:auto}.section-title{justify-content:space-between;align-items:baseline;gap:10px;margin:4px 0 10px;display:flex}.section-title strong{letter-spacing:.2px;font-size:13px}.section-title span{color:var(--muted);font-size:12px}.goal{border:1px solid var(--line);background:#0000001a;border-radius:12px;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:10px;display:grid}.goal+.goal{margin-top:8px}.x{border:1px solid var(--line);color:#e7eefcb3;width:22px;height:22px;font-family:var(--mono);background:#00000024;border-radius:8px;place-items:center;font-size:11px;display:grid}.mat-head{color:var(--muted);border-top:1px solid var(--line);grid-template-columns:1fr 80px 90px;gap:10px;margin-top:14px;padding:8px 10px;font-size:12px;display:grid}.mat{border:1px solid var(--line);background:#0000001a;border-radius:12px;grid-template-columns:1fr 80px 90px;align-items:center;gap:10px;margin-top:8px;padding:10px;font-size:13px;display:grid}.mat .have{text-align:right;font-family:var(--mono);border:1px solid var(--line);color:#e7eefceb;background:#0000002e;border-radius:10px;padding:7px 8px}.mat .rem{text-align:right;font-family:var(--mono);color:#e7eefcf2;background:#ffc77c14;border:1px solid #ffc77c40;border-radius:10px;padding:7px 8px}.footer-note{color:var(--muted);border-top:1px solid var(--line);margin-top:12px;padding:10px 10px 0;font-size:12px;line-height:1.35}@media (max-width:1100px){.app{grid-template-rows:auto auto;grid-template-columns:320px 1fr}.right{grid-column:1/-1}}@media (max-width:820px){.app,.detail-grid{grid-template-columns:1fr}.list{max-height:40vh}}