:root{--obsidian: #0f0b07;--obsidian-2: #17110b;--panel: #201811;--panel-2: #2a2016;--parchment: #efe6d2;--gold: #c9a227;--gold-soft: #e2c766;--ink: #f3ecdd;--muted: #ab9c82;--line: #3a2e20;--red: #c0392b;--blue: #2e6da4;--green: #3e8e5a;--violet: #8a6fb0;--paid: #4caf7d;--danger: #d9534f;--credit: #7bb98f;--tap: 56px;--radius: 14px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 50% -10%,#241a10 0%,transparent 60%),var(--obsidian);color:var(--ink);font-size:17px;line-height:1.4;-webkit-text-size-adjust:100%}.app-frame{display:flex;flex-direction:column;min-height:100dvh}.app-header{display:flex;align-items:center;gap:8px;padding:0 16px;padding-top:env(safe-area-inset-top,0);height:calc(56px + env(safe-area-inset-top,0));background:linear-gradient(180deg,#241a10,var(--obsidian-2));border-bottom:1px solid var(--line);color:var(--gold-soft);position:sticky;top:0;z-index:20}.app-title{font-weight:700;color:var(--gold-soft);text-decoration:none;letter-spacing:.02em;display:flex;align-items:center;gap:8px;flex:1;font-size:18px}.title-mark{font-size:20px}.role-tag{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--obsidian);background:var(--gold);border-radius:6px;padding:2px 7px}.header-gear{text-decoration:none;font-size:22px;padding:8px}.app-main{flex:1;padding:16px 16px calc(var(--tap) + 40px);max-width:720px;width:100%;margin:0 auto}.screen h1{font-size:24px;margin:4px 0 12px;color:var(--gold-soft)}.sr-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.screen-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;justify-content:space-between}.section-label{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:20px 0 8px}.section-head-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.muted{color:var(--muted)}.small{font-size:14px}.link{color:var(--gold-soft);font-weight:600;text-decoration:none;background:none;border:0;font-size:inherit;padding:6px 2px;cursor:pointer}.field-hint{font-size:13px;color:var(--muted)}.view-note{margin-top:18px;text-align:center;font-style:italic}.count-pill{background:var(--panel-2);color:var(--gold-soft);border:1px solid var(--line);border-radius:999px;padding:2px 12px;font-size:14px;font-weight:700}.count-pill.small-pill{padding:1px 10px;font-size:12px}.life{margin:6px 0 18px}.life-frame{position:relative;border-radius:20px;padding:22px 18px 18px;text-align:center;background:radial-gradient(140% 90% at 50% 0%,#3a1512,#1c0f0b 60%,#140b08);border:2px solid var(--gold);box-shadow:0 0 0 1px #000 inset,0 10px 26px #00000080}.life-settled .life-frame{background:radial-gradient(140% 90% at 50% 0%,#123a20,#0f1c12 60%,#0b140c)}.life-label{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);font-weight:700}.life-total{display:flex;align-items:flex-start;justify-content:center;gap:4px;margin:6px 0 2px;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.6)}.life-currency{font-size:30px;font-weight:700;margin-top:10px;color:var(--gold-soft)}.life-number{font-size:62px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.life-credit{color:var(--credit);font-weight:700;font-size:15px;margin-top:2px}.life-breakdown{margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:14px;color:var(--parchment)}.life-breakdown b{color:#fff;font-variant-numeric:tabular-nums}.life-dot{color:var(--gold)}.card-grid{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.mtg-card{position:relative;border-radius:14px;padding:3px;background:linear-gradient(160deg,#4a3a1e,#24190f 45%,#4a3a1e);box-shadow:0 4px 12px #0006}.mtg-card-head{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;background:linear-gradient(180deg,#2c2216,#221a10);border-radius:12px 12px 0 0}.mtg-card-name{font-weight:800;color:var(--gold-soft);letter-spacing:.02em}.mtg-card-cost{font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)}.mtg-card-body{background:linear-gradient(180deg,#efe6d2,#e3d7bd);border-radius:0 0 12px 12px;padding:8px;display:flex;flex-direction:column;gap:8px}.mtg-card-cleared{filter:saturate(.85)}.mtg-card-cleared .mtg-card-body{background:linear-gradient(180deg,#dfe9df,#cfe0cf)}.mtg-seal{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-14deg);border:3px solid var(--paid);color:var(--paid);font-weight:900;letter-spacing:.14em;font-size:22px;padding:6px 14px;border-radius:8px;background:#ffffffb8;pointer-events:none}.charge-line{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:8px 10px;border:1px solid #cbbfa0;border-radius:10px;background:#f7f1e2;color:#2a2016;text-align:left;font:inherit;cursor:default}button.charge-line{cursor:pointer}.charge-tappable:active{background:#efe6cf}.charge-name{font-weight:700;flex:0 0 auto;width:58px}.charge-amt{font-weight:800;font-variant-numeric:tabular-nums;flex:1;font-size:18px}.charge-state{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:3px 10px;white-space:nowrap}.charge-state.is-paid{background:#d7f0e2;color:#216c47}.charge-state.is-unpaid{background:#f3ddda;color:#9c3b32}.charge-line-missing{opacity:.6}.pip{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;font-size:14px;flex:0 0 auto;color:#fff;box-shadow:inset 0 -2px 3px #00000059,0 1px 2px #0000004d}.pip-rent{background:radial-gradient(circle at 35% 30%,#e05b4d,var(--red))}.pip-phone{background:radial-gradient(circle at 35% 30%,#4f93c9,var(--blue))}.pip-gas{background:radial-gradient(circle at 35% 30%,#5cb47b,var(--green))}.pip-adj{background:radial-gradient(circle at 35% 30%,#a98fce,var(--violet))}.pip-pay{background:radial-gradient(circle at 35% 30%,#5cc48c,var(--paid))}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;gap:10px;width:100%;min-height:var(--tap);padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-align:left;font:inherit;color:var(--ink)}.row-static{cursor:default}.row-main{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.row-title{font-weight:600}.row-sub{font-size:14px}.row-price{font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}.amt-credit{color:var(--credit)}.row-del{border:0;background:#d9534f24;color:var(--danger);border-radius:8px;width:34px;height:34px;font-size:14px;cursor:pointer;flex:0 0 auto}.row-lock{opacity:.5;font-size:14px}.mini-stat{display:flex;flex-direction:column;gap:2px;align-items:flex-start}.mini-stat-value{font-size:26px;font-weight:900;color:var(--gold-soft);font-variant-numeric:tabular-nums}.mini-stat-value.strong{color:#fff}.empty{text-align:center;padding:44px 16px;color:var(--muted)}.empty-icon{font-size:44px}.empty-title{font-size:18px;font-weight:700;color:var(--ink);margin:12px 0 4px}.btn-row{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}.btn-row .btn-secondary{flex:1;min-width:46%}.form{display:flex;flex-direction:column;gap:14px}.form-row-2{display:flex;gap:10px}.form-row-2 .field{flex:1}.field{display:flex;flex-direction:column;gap:4px}.field-label{font-weight:600;color:var(--parchment)}input[type=text],input[type=tel],input[type=email],input[type=date],input[type=month],input[type=search],input[type=number],input[type=password],select,textarea{width:100%;min-height:var(--tap);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:17px;background:#140f0a;color:var(--ink);font-family:inherit}input::placeholder{color:#6f6350}.btn-primary{min-height:var(--tap);border:1px solid var(--gold);border-radius:12px;background:linear-gradient(180deg,#d8b53c,#b8901f);color:#201400;font-size:17px;font-weight:800;padding:0 16px;cursor:pointer}.btn-primary:active{filter:brightness(.94)}.btn-primary:disabled{opacity:.5}.btn-secondary{min-height:var(--tap);border:1px solid var(--gold);border-radius:12px;background:var(--panel);color:var(--gold-soft);font-size:16px;font-weight:700;padding:0 16px;cursor:pointer}.btn-secondary:disabled{opacity:.45}.form-error{color:#ff9b95;font-weight:600;margin:0}.saved-note{color:var(--paid);font-weight:700}.card-block{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px;display:flex;flex-direction:column;gap:10px}.card-block .section-label{margin:0}.app-version{text-align:center;margin-top:20px}code{background:#140f0a;padding:1px 6px;border-radius:6px;font-size:13px;word-break:break-all;color:var(--gold-soft)}.log-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.log-item{display:flex;gap:12px;align-items:flex-start;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:10px}.log-icon{font-size:18px;margin-top:1px}.log-main{display:flex;flex-direction:column;gap:2px}.log-summary{font-weight:600}.log-meta{font-size:12px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;z-index:40}.sheet{background:var(--obsidian-2);width:100%;max-width:720px;margin:0 auto;border-radius:18px 18px 0 0;border-top:2px solid var(--gold);max-height:92dvh;display:flex;flex-direction:column;animation:sheet-up .18s ease-out}@keyframes sheet-up{0%{transform:translateY(12px);opacity:.6}}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}.sheet-head h2{margin:0;font-size:18px;color:var(--gold-soft)}.sheet-close{border:0;background:none;font-size:20px;padding:8px;color:var(--muted);cursor:pointer}.sheet-body{padding:16px;overflow-y:auto}.fab{position:fixed;right:18px;bottom:calc(var(--tap) + 20px + env(safe-area-inset-bottom,0));width:60px;height:60px;border-radius:50%;border:1px solid var(--gold);background:linear-gradient(180deg,#d8b53c,#b8901f);color:#201400;font-size:30px;line-height:1;box-shadow:0 6px 16px #0006;z-index:30;cursor:pointer}.sync-badge{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}.sync-dot{font-size:13px}.sync-synced .sync-dot{color:var(--paid)}.sync-syncing .sync-dot{color:var(--gold-soft)}.sync-offline .sync-dot,.sync-error .sync-dot{color:var(--danger)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:linear-gradient(180deg,var(--obsidian-2),#100b07);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0);z-index:20}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:var(--tap);padding:6px 0 4px;text-decoration:none;color:var(--muted);font-size:11px}.nav-item.active{color:var(--gold-soft)}.nav-icon{font-size:22px;line-height:1}.login-screen{max-width:26rem;margin:0 auto;padding-top:2rem;text-align:center}.login-screen .form{text-align:left;margin-top:8px}.login-crest{font-size:54px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.5))}.login-error{color:#ffb4ae;background:#d9534f29;border-radius:8px;padding:.6rem .8rem;margin:0;font-size:.95rem}.work-totals{display:flex;gap:12px}.wt-cell{flex:1;display:flex;flex-direction:column;gap:2px}.wt-value{font-size:1.35rem;font-weight:700;color:var(--paid)}.wt-value.wt-pending{color:var(--gold-soft)}.credit-note{margin-top:-4px}.work-badge{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;align-self:center}.work-approved{color:var(--obsidian);background:var(--paid)}.work-pending{color:var(--obsidian);background:var(--gold-soft)}.work-rejected{color:var(--ink);background:#d9534f59}.work-row-pending{border:1px dashed var(--gold);opacity:.92}.work-row-rejected{opacity:.6}.work-row-approved{border-left:3px solid var(--paid)}.row-actions{display:flex;gap:6px;align-items:center}.approve-actions{flex-wrap:wrap;justify-content:flex-end}.btn-tiny{font-size:.8rem;padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}.btn-tiny.btn-approve{border-color:var(--paid);color:var(--paid);font-weight:700}.btn-tiny.btn-reject{border-color:var(--danger);color:#ffb4ae}.reject-reason{margin-top:6px;width:100%}.work-approve-row{flex-wrap:wrap}.boss{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(120% 90% at 50% 20%,#3a1512db,#090604f2);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:boss-fade-in .22s ease-out}.boss-stage{width:100%;max-width:420px;border-radius:20px;padding:20px 18px 14px;text-align:center;background:radial-gradient(140% 90% at 50% 0%,#2a1710,#17110b 62%,#120b07);border:2px solid var(--gold);box-shadow:0 0 0 1px #000 inset,0 16px 40px #0009}.boss-arena{position:relative;height:190px;display:flex;align-items:flex-end;justify-content:center;gap:6px}.boss-monster{transition:transform .5s cubic-bezier(.2,.9,.3,1.2);transform-origin:50% 100%}.boss-monster-body{fill:#6c3f8f;stroke:#38214a;stroke-width:3;transition:fill .25s ease}.boss-monster-horn{fill:#d9c48a}.boss-monster-eyes circle{fill:#fdf6e3}.boss-monster-pupil{fill:#1a0f22}.boss-monster-mouth{fill:#2a1533;stroke:#2a1533;stroke-width:2;stroke-linejoin:round}.boss-monster-shadow{fill:#0006}.boss-monster.is-hit{animation:boss-shake .42s ease}.boss-monster.is-hit .boss-monster-body{fill:#e0503f}.boss-monster.is-healing{animation:boss-swell .5s ease}.boss-monster.is-healing .boss-monster-body{fill:#7bcb7e}.boss-monster.is-defeated{animation:boss-defeat .7s forwards ease-in}.boss-monster.is-defeated .boss-monster-body{fill:#4a4a55}.boss-monster.is-defeated .boss-monster-eyes circle{fill:#9a9aa5}.boss-hero{transition:transform .3s cubic-bezier(.3,.8,.3,1.3);margin-bottom:6px}.boss-hero-head{fill:#e7c98a}.boss-hero-torso{fill:#2e6da4}.boss-hero-leg{fill:#23384a}.boss-hero-sword rect{fill:#dfe6ee}.boss-hero.is-attacking{animation:boss-lunge .42s ease}.boss-float{position:absolute;top:26px;left:50%;transform:translate(-50%);font-size:30px;font-weight:900;font-variant-numeric:tabular-nums;text-shadow:0 2px 8px rgba(0,0,0,.7);animation:boss-float-rise .9s ease-out forwards;pointer-events:none}.boss-float-strike{color:#ff6a58}.boss-float-heal{color:#f2b24a}.boss-hp{margin-top:14px}.boss-hp-track{height:20px;border-radius:11px;background:#1b120c;border:1px solid var(--line);box-shadow:inset 0 2px 5px #0009;overflow:hidden}.boss-hp-fill{height:100%;border-radius:11px 0 0 11px;background:linear-gradient(180deg,#d46b5c,#b33726);transition:background .2s ease}.boss-hp-fill.is-strike{background:linear-gradient(180deg,#ff8a76,#d23b28)}.boss-hp-fill.is-heal{background:linear-gradient(180deg,#f4c56b,#d98a2b)}.boss-hp-fill.is-settled{background:linear-gradient(180deg,#6fe0a0,#2f9c63)}.boss-hp-readout{margin-top:8px;display:flex;flex-direction:column;align-items:center;gap:2px}.boss-hp-label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);font-weight:700}.boss-hp-figure{font-size:42px;font-weight:900;line-height:1;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-shadow:0 2px 10px rgba(0,0,0,.6)}.boss-hp-currency{font-size:22px;color:var(--gold-soft);margin-right:1px;vertical-align:6px}.boss-summary{margin:12px 4px 6px;font-size:14px;font-weight:600;color:var(--parchment);min-height:19px}.boss-summary-strike{color:#ffcabf}.boss-summary-heal{color:#f4d59a}.boss-summary-victory{color:#8fe6b2;font-size:16px;font-weight:800}.boss-victory .boss-stage{border-color:var(--paid);box-shadow:0 0 0 1px #000 inset,0 0 40px #4fc88c59,0 16px 40px #0009}.boss-skip{margin-top:4px;background:none;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;letter-spacing:.06em;padding:6px 16px;min-height:36px}@keyframes boss-fade-in{0%{opacity:0}to{opacity:1}}@keyframes boss-shake{0%,to{transform:translate(0) scale(var(--boss-scale, 1))}20%{transform:translate(-8px) rotate(-3deg)}40%{transform:translate(7px) rotate(2deg)}60%{transform:translate(-5px) rotate(-1deg)}80%{transform:translate(3px)}}@keyframes boss-swell{0%{transform:scale(.9)}55%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes boss-defeat{0%{transform:scale(1) rotate(0);opacity:1}to{transform:scale(.55) translateY(26px) rotate(8deg);opacity:.35}}@keyframes boss-lunge{0%,to{transform:translate(0) translateY(0)}45%{transform:translate(-26px) translateY(-6px) rotate(-8deg)}}@keyframes boss-float-rise{0%{opacity:0;transform:translate(-50%) translateY(8px) scale(.8)}25%{opacity:1;transform:translate(-50%) translateY(-2px) scale(1.1)}to{opacity:0;transform:translate(-50%) translateY(-40px) scale(1)}}@media(prefers-reduced-motion:reduce){.boss,.boss-monster,.boss-hero,.boss-float,.boss-monster.is-hit,.boss-monster.is-healing,.boss-monster.is-defeated,.boss-hero.is-attacking{animation:none!important;transition:none!important}}
