:root{--parchment: #F6EFE0;--parchment-2: #ECE1CA;--parchment-hi: #FBF6EA;--wood: #7A5230;--wood-deep: #4A3119;--wood-light: #9C7142;--moss: #5C8A4A;--moss-deep: #2F4A28;--moss-hi: #8FC07A;--ink: #3A2E1F;--ink-soft: #7A6A53;--cream-text: #F6EFE0;--pixel-red: #C8493F;--ember: #C8772E;--px: 2px;--radius: 12px;--shadow-card: 0 3px 12px rgba(74, 49, 25, .14);--shadow-card-hover: 0 10px 26px rgba(74, 49, 25, .22);--glow: 0 0 0 2px rgba(92, 138, 74, .3);--line: 1px dashed rgba(122, 82, 48, .35);--wood-grain: repeating-linear-gradient(90deg, rgba(74, 49, 25, .04) 0 3px, transparent 3px 11px);--nav-w: 200px;--nav-w-collapsed: 72px;--bg-cream: var(--parchment);--card-glass: var(--parchment);--card-border: rgba(122, 82, 48, .35);--moss-mid: var(--moss);--sage: rgba(92, 138, 74, .45);--oak: rgba(122, 82, 48, .5);--honey: var(--moss-hi);--warm-orange: var(--ember)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,system-ui,sans-serif;color:var(--ink);background-color:var(--parchment);background-image:linear-gradient(180deg,var(--parchment-hi),rgba(251,246,234,0) 220px),radial-gradient(circle at 90% 4%,rgba(122,82,48,.05) 0 7px,transparent 8px);background-attachment:fixed;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}.glass-card{background:var(--wood-grain),var(--parchment);border:3px solid var(--wood-deep);border-radius:var(--radius);box-shadow:inset 0 0 0 2px #7a523038,var(--shadow-card);padding:18px;position:relative;transition:transform .18s ease,box-shadow .18s ease}.glass-card:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 2px #7a523038,var(--shadow-card-hover)}.px-btn{border:3px solid var(--wood-deep);background:var(--moss);color:var(--cream-text);font-weight:700;padding:10px 16px;border-radius:8px;cursor:pointer;box-shadow:0 4px 0 var(--wood-deep),inset 0 2px #fff3;transition:transform .06s ease,box-shadow .06s ease,background .15s ease;font-size:14px}.px-btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--wood-deep),inset 0 2px #fff3}.px-btn.ghost{background:var(--parchment);color:var(--wood-deep);border-color:var(--wood);box-shadow:0 4px 0 var(--wood),inset 0 2px #fff6}.px-btn.danger{background:var(--pixel-red);border-color:#7e2f2a;box-shadow:0 3px #7e2f2a,inset 0 2px #ffffff2e}.px-btn.small{padding:6px 10px;font-size:12px}.px-tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;line-height:1.4;padding:2px 8px;border-radius:4px;border:1px dashed rgba(74,49,25,.45);background:#ece1cab3;color:var(--ink-soft)}.px-tag.red{background:#c8493f1f;color:var(--pixel-red);border-color:#c8493f8c}.px-tag.sage{background:#5c8a4a24;border-color:#5c8a4a80}.px-tag.oak{background:#7a52301f;border-color:#7a523080}h1,h2,h3{color:var(--moss-deep);margin:0 0 10px;letter-spacing:.4px;font-weight:800}.muted{color:var(--ink-soft);font-size:13px}.row{display:flex;gap:10px;align-items:center}.col{display:flex;flex-direction:column;gap:10px}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink);background:var(--parchment-2);border:2px solid var(--wood);border-radius:8px;padding:9px 11px;outline:none;width:100%;transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{border-color:var(--moss);box-shadow:var(--glow)}label{font-size:13px;font-weight:600;color:var(--ink-soft);display:block;margin-bottom:4px}.empty-state{text-align:center;color:var(--ink-soft);padding:40px 20px;border:1px dashed rgba(122,82,48,.4);border-radius:var(--radius);margin-top:16px}.list-sep{height:0;border:0;border-top:var(--line);margin:8px 0;opacity:.85}.ring-wrap{display:inline-flex;align-items:center;justify-content:center;position:relative}.ring-label{position:absolute;font-weight:800;color:var(--moss-deep)}@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}.pop-in{animation:pop .3s ease both}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.floaty{animation:floaty 3s ease-in-out infinite}
