:root{--paper: #f7f3ea;--card: #fff;--ink: #1a1814;--rule: #d8cfc0;--muted: #6c645a;--accent: #8a6d3b;--good: #2c7a4b;--bad: #c44536;--warn: #d4a657;--paper-deep: #f1ead9;--stripe: #f6f1e4;--card-hover: #fdfbf5;--rule-hair: #e7dfd0;--accent-soft: rgba(138, 109, 59, .1);--good-soft: rgba(44, 122, 75, .1);--bad-soft: rgba(196, 69, 54, .09);--warn-soft: rgba(212, 166, 87, .16);--gold: #b08d4f;--focus-ring: 0 0 0 3px rgba(138, 109, 59, .28);--font-sans: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display: "Songti SC", "Noto Serif SC", STSong, SimSun, Georgia, serif;--font-mono: "SF Mono", Monaco, Menlo, monospace;--fs-xs: 11px;--fs-sm: 12px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 22px;--fs-2xl: 28px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-pill: 999px;--shadow: 0 1px 0 #0001, 0 3px 16px #0000000c;--shadow-pop: 0 12px 48px rgba(26, 24, 20, .22);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--dur-spring: .45s;--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--tap: 44px}@media (prefers-reduced-motion: reduce){:root{--dur-fast: 0ms;--dur-base: 0ms;--dur-slow: 0ms;--dur-spring: 0ms}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}html.is-capturing *,html.is-capturing *:before,html.is-capturing *:after{animation-play-state:paused!important;transition:none!important}html.is-capturing .confetti-canvas,html.is-capturing .toaster{visibility:hidden!important}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}a:hover{color:var(--gold)}h1,h2,h3{font-family:var(--font-display);letter-spacing:.02em}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}code{background:#efe7d6;padding:1px 5px;border-radius:3px;font-size:.86em;font-family:var(--font-mono)}.num{text-align:right;font-variant-numeric:tabular-nums}.money-lg{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:var(--fs-xl)}.app-header{display:flex;align-items:center;gap:1.5rem;padding:12px 22px;border-bottom:1px solid var(--rule);background:#f7f3eaf2;position:sticky;top:0;z-index:20}.app-header h1{font-size:var(--fs-lg);font-weight:700;margin:0}.app-header .v{color:var(--accent)}.app-header .slice{margin-left:auto;font-size:var(--fs-sm);color:var(--muted)}.nav-link{color:var(--muted);padding:4px 2px;border-bottom:2px solid transparent;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.nav-link:hover{color:var(--ink)}.nav-link.active{color:var(--accent);border-bottom-color:var(--gold)}.wrap{max-width:1180px;margin:0 auto;padding:22px}.card{background:var(--card);border:1px solid var(--rule);border-radius:var(--r-md);padding:16px 18px;margin-bottom:14px;box-shadow:var(--shadow);transition:border-color var(--dur-fast) var(--ease-out)}.muted{color:var(--muted)}.small{font-size:var(--fs-sm)}.row{display:flex;align-items:center;gap:10px}.row-wrap{display:flex;flex-wrap:wrap;gap:10px}.spacer{flex:1}.grow{flex:1 1 160px;min-width:0}.lede{color:var(--muted);max-width:760px;margin:4px 0 16px}.hairline{border-top:1px solid var(--rule-hair)}button,.btn{font:inherit;font-size:13px;border:1px solid var(--rule);background:#fff;color:var(--ink);padding:6px 12px;border-radius:var(--r-sm);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}button:hover:not(:disabled),.btn:hover{border-color:var(--gold)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--focus-ring);border-color:var(--accent)}.btn-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn-good{background:var(--good);color:#fff;border-color:var(--good)}.btn-warn{background:var(--warn);color:#fff;border-color:var(--warn)}.btn-danger{background:var(--bad);color:#fff;border-color:var(--bad)}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:7px 10px;text-align:left;border-bottom:1px solid #efe7d6;vertical-align:top}th{font-weight:600;color:var(--muted);background:var(--paper);font-family:var(--font-sans)}.tbl-striped tbody tr:nth-child(2n) td{background:var(--stripe)}.tbl-hover tbody tr td{transition:background-color var(--dur-fast) var(--ease-out)}.tbl-hover tbody tr:hover td{background:var(--accent-soft)}.pill{display:inline-block;font-size:var(--fs-xs);font-weight:600;padding:2px 9px;border-radius:var(--r-pill);letter-spacing:.01em}.pill-muted{background:#efe7d6;color:var(--muted)}.pill-good{background:var(--good-soft);color:var(--good)}.pill-warn{background:var(--warn-soft);color:var(--accent)}.pill-bad{background:var(--bad-soft);color:var(--bad)}.pill-stage{background:var(--accent-soft);color:var(--accent)}.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--rule);border-radius:var(--r-md)}textarea,input,select{font:inherit;font-size:13px;border:1px solid var(--rule);border-radius:var(--r-sm);padding:6px 9px;background:#fff;color:var(--ink);width:100%;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.field{margin-bottom:8px}.field label{display:block;font-size:var(--fs-sm);color:var(--muted);margin-bottom:3px}@media (max-width: 640px){.app-header{gap:10px;padding:10px 12px;overflow-x:auto}.app-header h1{font-size:var(--fs-md);white-space:nowrap;flex:none}.app-header nav{flex-wrap:nowrap}.app-header nav>*,.app-header nav .pill,.app-header nav button{flex:none;white-space:nowrap}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a181473;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:1000;animation:fade-in var(--dur-base) var(--ease-out)}.modal-overlay.center{align-items:center}.modal-panel{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-lg);padding:18px;width:100%;max-height:88vh;overflow:auto;box-shadow:var(--shadow-pop);animation:pop-in var(--dur-base) var(--ease-out);will-change:transform}.modal-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.modal-head h3{margin:0;flex:1}.modal-close{border:none;background:transparent;font-size:18px;line-height:1;color:var(--muted);padding:4px 8px}.modal-close:hover{color:var(--ink);border:none}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}.enter-pop{animation:pop-in var(--dur-base) var(--ease-out)}.drawer{animation:slide-left var(--dur-slow) var(--ease-out);will-change:transform}@keyframes slide-left{0%{transform:translate(40px);opacity:0}}.fab{transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.fab:hover{transform:translateY(-2px)}.pop-menu{box-shadow:var(--shadow-pop);border-radius:var(--r-md);animation:pop-in var(--dur-fast) var(--ease-out)}.toaster{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:8px;max-width:min(92vw,480px);background:var(--ink);color:var(--paper);font-size:13px;padding:9px 14px;border-radius:var(--r-md);box-shadow:var(--shadow-pop);animation:toast-in var(--dur-base) var(--ease-out)}.toast.leaving{opacity:0;transform:translateY(8px);transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}.toast-success{background:var(--good);color:#fff}.toast-error{background:var(--bad);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.spinner{display:inline-block;border:2px solid var(--rule);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{position:relative;overflow:hidden;background:#ece5d4;border-radius:var(--r-sm)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:shimmer 1.4s var(--ease-out) infinite}@keyframes shimmer{to{transform:translate(100%)}}.empty-state{padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--rule);border-radius:var(--r-md)}.empty-state .es-title{font-size:var(--fs-md);color:var(--ink);margin:8px 0 4px}.empty-state .es-hint{font-size:var(--fs-sm)}.psteps{display:flex;align-items:center;margin:6px 0 14px}.pstep{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}.pstep .dot{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:700;border:2px solid var(--rule);color:var(--muted);background:#fff;box-sizing:border-box;transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out)}.pstep.done .dot,.pstep.active .dot{background:var(--accent);border-color:var(--accent);color:#fff}.pstep.active{color:var(--ink);font-weight:600}.pstep.done{color:var(--accent)}.psteps .bar{flex:1;height:2px;background:var(--rule-hair);margin:0 6px;min-width:14px;position:relative;overflow:hidden}.psteps .bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-slow) var(--ease-out)}.psteps .bar.filled:after{transform:scaleX(1)}.cmp-wrap{overflow-x:auto;border:1px solid var(--rule);border-radius:8px;background:#fff;box-shadow:var(--shadow)}.cmp{min-width:640px}.cmp th,.cmp td{white-space:nowrap}.cmp .ref-col{background:#f4eeda;font-weight:600}.cmp .win-col{background:#2c7a4b14}.cmp .lose-col{background:#6c645a0d}.cmp .cat{font-weight:600}.cmp .out-high{color:var(--bad);font-weight:700}.cmp .out-low{color:var(--good);font-weight:700}.cmp .within{color:var(--ink)}.cmp tfoot td{font-weight:700;border-top:2px solid var(--rule);background:var(--paper)}.cmp .total-ok{color:var(--good)}.cmp .total-hi{color:var(--bad)}.rz{table-layout:fixed}.rz tbody td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rz th{position:relative}.col-resizer{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;z-index:4;transition:opacity var(--dur-fast) var(--ease-out)}.col-resizer:hover{background:var(--accent);opacity:.35}.cmp-sticky thead{position:sticky;top:0;z-index:4}.cmp-sticky thead th{background:var(--paper);box-shadow:0 1px 0 var(--rule)}.round-pill{display:inline-block;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:1px 5px;border-radius:8px;margin-left:4px}.win-pill{display:inline-block;background:var(--good);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;margin-left:5px}.lost-pill{display:inline-block;background:#efe7d6;color:var(--muted);font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;margin-left:5px}.clean-pill{font-size:10px}.msg{background:#fff;border:1px solid var(--rule);border-radius:8px;padding:11px 14px;margin-bottom:9px;box-shadow:var(--shadow);transition:border-color var(--dur-fast) var(--ease-out)}.msg:hover{border-color:var(--rule-hair)}.msg .meta{font-size:11px;color:var(--muted);margin-bottom:4px}.msg .author{font-weight:600;color:var(--ink)}.msg .body{font-size:13px;white-space:pre-wrap}.msg .anchor{font-family:var(--font-mono);font-size:10px;background:var(--paper);padding:1px 6px;border-radius:3px;margin-left:6px}.tab{position:relative;border:1px solid transparent;background:transparent;color:var(--muted);padding:6px 12px;border-radius:var(--r-sm)}.tab:after{content:"";position:absolute;left:10px;right:10px;bottom:0;height:2px;background:var(--gold);border-radius:1px;transform:scaleX(0);transform-origin:center;transition:transform var(--dur-base) var(--ease-out)}.tab:hover{color:var(--ink);border-color:transparent}.tab.active{color:var(--ink);font-weight:600}.tab.active:after{transform:scaleX(1)}.shot-zoom{transition:max-width var(--dur-base) var(--ease-out)}@media (max-width: 900px){.wrap{padding:12px}.app-header{gap:10px;padding:10px 12px;overflow-x:auto}.app-header .slice{display:none}}.portal .btn-primary,.portal .btn-good{transition:transform var(--dur-spring) var(--ease-spring),border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.portal .btn-primary:active:not(:disabled),.portal .btn-good:active:not(:disabled){transform:scale(.97)}.portal .eng-card{transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.portal .eng-card:hover{transform:translateY(-2px);border-color:var(--gold)}.portal .eng-card.awarded{border-left:3px solid var(--good)}.portal .eng-card.lost{border-left:3px solid var(--rule)}.motif{display:block}.motif-center{margin:0 auto}.motif-bob{animation:motif-bob 3s ease-in-out infinite}@keyframes motif-bob{50%{transform:translateY(-4px)}}.portal .bubble{max-width:85%;border-radius:var(--r-lg);padding:8px 12px;margin-bottom:8px;font-size:13px}.portal .bubble .meta{font-size:var(--fs-xs);color:var(--muted);margin-bottom:2px}.portal .bubble.me{background:var(--accent-soft);margin-left:auto;border-top-right-radius:4px}.portal .bubble.them{background:#fff;border:1px solid var(--rule-hair);border-top-left-radius:4px}.row-error td{background:#fce8e6}.row-changed td{background:#d4a6572e}.row-needs td{background:#fff4e5}.row-pulse td{animation:row-pulse .9s var(--ease-out) 1}@keyframes row-pulse{0%{background:#ffdba8}}.bid-totals{background:var(--card)}@media (max-width: 640px){.portal .wrap,.portal .shell{padding:12px}.portal input,.portal select,.portal textarea{font-size:16px;min-height:var(--tap)}.portal button{min-height:var(--tap)}.portal .pill,.portal .round-pill{min-height:0}.portal .bid-scroll{max-height:none!important;overflow:visible!important}.portal .bid-table{width:100%!important;table-layout:auto!important;min-width:0!important}.portal .bid-table col{width:auto!important}.portal .bid-table thead,.portal .bid-table .col-resizer{display:none}.portal .bid-table tbody tr{display:block;border:1px solid var(--rule-hair);border-radius:var(--r-md);margin:0 0 10px;background:var(--card);padding:10px 12px}.portal .bid-table tbody tr.grp-row{border:none;border-radius:var(--r-sm);background:var(--paper-deep);padding:6px 12px}.portal .bid-table tbody td{display:flex;justify-content:space-between;align-items:center;gap:10px;border:none;padding:3px 0;white-space:normal;overflow:visible;width:auto!important}.portal .bid-table tbody td:before{content:attr(data-label);color:var(--muted);font-size:var(--fs-sm);flex:0 0 auto}.portal .bid-table tbody td:not([data-label]):before{content:none}.portal .bid-table td.cell-item{display:block;font-weight:600}.portal .bid-table td.cell-item:before{content:none}.portal .bid-table td input[type=number],.portal .bid-table td input[type=text]{max-width:60%}.portal .bid-table input[type=checkbox]{width:20px;height:20px;min-height:0}.portal .bid-table label{padding:6px 0}.portal .bid-totals{position:sticky;bottom:0;z-index:5;box-shadow:0 -1px 0 var(--rule);margin-bottom:0}.portal .pstep .lbl{display:none}.portal .pstep.active .lbl{display:inline}.fab .fab-label{display:none}}
