:root{--ink:#181717;--ink-raised:#201f1f;--paper:#fffefd;--line:rgba(255,254,253,.14);--surface:rgba(255,254,253,.045);--surface-2:rgba(255,254,253,.08);--text:#f6f4f0;--text-soft:rgba(255,254,253,.72);--text-faint:rgba(255,254,253,.45);--teal:#2db0b8;--teal-deep:#217585;--amber:#d9a441;--green:#3fb37f;--red:#e0665c;--grey:#8a8885;--radius:10px;--sans:"DM Sans",system-ui,-apple-system,Segoe UI,sans-serif;--serif:"Playfair Display",Georgia,serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.45}
a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--serif);font-weight:500;margin:0 0 .4em;letter-spacing:-.01em}
h1{font-size:1.9rem}h2{font-size:1.25rem}h3{font-size:1.05rem}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:8px;padding:.5rem .9rem}
button:hover{border-color:var(--teal)}button.primary{background:var(--teal);border-color:var(--teal);color:#06282c;font-weight:600}
button.ghost{background:transparent}button.small{padding:.3rem .6rem;font-size:.85rem}button.danger{border-color:var(--red);color:var(--red)}
input,select,textarea{background:var(--ink-raised);border:1px solid var(--line);border-radius:8px;padding:.5rem .65rem;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal)}textarea{min-height:90px;resize:vertical}
label{display:block;font-size:.85rem;color:var(--text-soft);margin-bottom:.7rem}label>input,label>select,label>textarea{margin-top:.25rem}
.brand{display:flex;align-items:baseline;gap:.5rem}.brand-mark{font-family:var(--serif);font-size:1.4rem;letter-spacing:.08em;color:var(--teal)}.brand-sub{font-size:.8rem;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase}

/* login */
.login-body{display:grid;place-items:center;min-height:100vh;padding:16px}
.login{width:100%;max-width:360px;background:var(--ink-raised);border:1px solid var(--line);border-radius:14px;padding:1.6rem}
.login .brand{margin-bottom:1.2rem}.login button{width:100%;margin-top:.4rem;background:var(--teal);color:#06282c;border-color:var(--teal);font-weight:600}
.err{color:var(--red);font-size:.85rem;min-height:1em}

/* shell */
.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}
.side{border-right:1px solid var(--line);padding:1.2rem 1rem;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:.3rem}
.side .brand{margin-bottom:1.2rem;padding-left:.4rem}
.side a.nav{display:flex;align-items:center;justify-content:space-between;color:var(--text-soft);padding:.5rem .6rem;border-radius:8px}
.side a.nav:hover{background:var(--surface);text-decoration:none}.side a.nav.active{background:var(--surface-2);color:var(--text)}
.side .who{margin-top:auto;font-size:.85rem;color:var(--text-faint);padding:.6rem}.side .who b{color:var(--text)}
.main{padding:1.4rem 1.6rem 4rem;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap}
.topbar .actions{display:flex;gap:.5rem;flex-wrap:wrap}
.badge{display:inline-block;font-size:.72rem;padding:.12rem .5rem;border-radius:999px;background:var(--surface-2);color:var(--text-soft)}
.pill{display:inline-block;font-size:.72rem;font-weight:600;padding:.15rem .55rem;border-radius:999px;color:#fff;letter-spacing:.02em}
.pill.pass,.pill.green{background:#1f8a5b}.pill.watch,.pill.amber{background:#b7791f}.pill.fail,.pill.red{background:#b5443a}.pill.unknown,.pill.grey{background:#8a8885}.pill.teal{background:var(--teal-deep)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem}
.card h2,.card h3{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.stat{display:flex;flex-direction:column;gap:.1rem}.stat .n{font-family:var(--serif);font-size:1.8rem;line-height:1}.stat .l{font-size:.8rem;color:var(--text-faint)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.8rem;margin-bottom:1.2rem}
ul.list{list-style:none;margin:0;padding:0}ul.list li{padding:.55rem 0;border-top:1px solid var(--line);display:flex;gap:.6rem;align-items:flex-start;justify-content:space-between}
ul.list li:first-child{border-top:0}ul.list .meta{font-size:.8rem;color:var(--text-faint)}ul.list .main-t{flex:1;min-width:0}
.muted{color:var(--text-faint)}.soft{color:var(--text-soft)}.small{font-size:.85rem}.fine{font-size:.78rem;color:var(--text-faint)}
.empty{color:var(--text-faint);padding:.6rem 0;font-size:.9rem}
table.kv{border-collapse:collapse;width:100%}table.kv th{text-align:left;font-weight:500;color:var(--text-faint);padding:.3rem .6rem .3rem 0;width:45%;vertical-align:top;font-size:.85rem}table.kv td{padding:.3rem 0;vertical-align:top}
table.grid{border-collapse:collapse;width:100%;font-size:.9rem}table.grid th{text-align:left;color:var(--text-faint);font-weight:500;border-bottom:1px solid var(--line);padding:.4rem .5rem .4rem 0;font-size:.8rem}table.grid td{padding:.5rem .5rem .5rem 0;border-bottom:1px solid var(--line);vertical-align:top}
.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.right{margin-left:auto}
.tabs{display:flex;gap:.3rem;border-bottom:1px solid var(--line);margin-bottom:1rem;overflow-x:auto}.tabs button{border:0;background:none;border-bottom:2px solid transparent;border-radius:0;padding:.5rem .7rem;color:var(--text-soft);white-space:nowrap}.tabs button.active{color:var(--text);border-bottom-color:var(--teal)}

/* kanban */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:250px;gap:.7rem;overflow-x:auto;padding-bottom:1rem;align-items:start}
.col{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem;min-height:140px}
.col.over{border-color:var(--teal);background:rgba(45,176,184,.08)}
.col h3{font-family:var(--sans);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:0 .2rem .6rem;font-weight:600;display:flex;justify-content:space-between}
.dcard{background:var(--ink-raised);border:1px solid var(--line);border-radius:8px;padding:.6rem .7rem;margin-bottom:.5rem;cursor:grab;display:block;color:inherit}
.dcard:hover{border-color:var(--teal);text-decoration:none}.dcard.dragging{opacity:.4}
.dcard .addr{font-weight:600}.dcard .sub{font-size:.8rem;color:var(--text-faint)}.dcard .tags{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.4rem}
.dcard .price{font-family:var(--serif);font-size:1.05rem;margin-top:.2rem}

/* deal header */
.dealhead{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;flex-wrap:wrap;margin-bottom:1rem}
.dealhead h1{margin-bottom:.1rem}.dealhead .sub{color:var(--text-soft)}
.numbers{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem}
.numbers .box{background:var(--ink-raised);border:1px solid var(--line);border-radius:8px;padding:.6rem .7rem}.numbers .box .n{font-family:var(--serif);font-size:1.25rem}.numbers .box .l{font-size:.75rem;color:var(--text-faint)}
.feed li{display:block}.feed .who{font-size:.78rem;color:var(--text-faint)}
.fit .line{display:flex;gap:.6rem;align-items:flex-start;padding:.4rem 0;border-top:1px solid var(--line)}.fit .line:first-child{border:0}.fit .line .lab{font-weight:600;min-width:110px}
.journey{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.7rem}
.journey .jcol{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem}
.journey .jcol h3{font-family:var(--sans);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:0 0 .5rem}
.ccard{display:block;background:var(--ink-raised);border:1px solid var(--line);border-radius:8px;padding:.55rem .7rem;margin-bottom:.4rem;color:inherit}.ccard:hover{border-color:var(--teal);text-decoration:none}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;padding:16px;z-index:50}
.modal{background:var(--ink-raised);border:1px solid var(--line);border-radius:14px;padding:1.3rem;width:100%;max-width:560px;max-height:92vh;overflow:auto}
.modal .fields{display:grid;grid-template-columns:1fr 1fr;gap:0 .8rem}.modal .fields label.full{grid-column:1/-1}
.modal .btns{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.6rem}
.toast{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:var(--teal);color:#06282c;padding:.6rem 1rem;border-radius:999px;font-weight:600;z-index:60}
pre.doc{white-space:pre-wrap;font-size:.85rem;background:var(--ink-raised);padding:.8rem;border-radius:8px;border:1px solid var(--line)}

/* share page */
.share-body{background:var(--ink)}.share{max-width:760px;margin:0 auto;padding:2rem 16px 4rem}.share header{margin-bottom:1.5rem}.share section{margin-bottom:1.6rem}.share .sub{color:var(--text-soft)}

@media (max-width:860px){
  .shell{grid-template-columns:1fr}.side{position:fixed;bottom:0;left:0;right:0;top:auto;height:auto;flex-direction:row;border-right:0;border-top:1px solid var(--line);background:var(--ink);padding:.4rem .5rem;gap:0;z-index:40;overflow-x:auto}
  .side .brand,.side .who{display:none}.side a.nav{flex:1;justify-content:center;font-size:.8rem;padding:.5rem .3rem}.side a.nav .badge{display:none}
  .main{padding:1rem 16px 5rem}.grid2,.grid3{grid-template-columns:1fr}.modal .fields{grid-template-columns:1fr}
  .kanban{grid-auto-columns:82vw}table.grid{display:block;overflow-x:auto}
}

button:disabled{opacity:.45;cursor:not-allowed;border-color:var(--line)}
