/* ============================================================
   ManpowerCurve — Application Styles
   assets/app.css
   Extracted from index.html and extended for multi-page app.
   ============================================================ */

:root{--bg:#f7f5f0;--panel:#fff;--ink:#1a1a1a;--ink-soft:#5a5a5a;--ink-faint:#9a9a9a;--line:#e6e2d8;--line-soft:#efeae0;--accent:#c8553d;--actual:#3d7c5c;}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{font-family:'JetBrains Mono',monospace;font-size:13px;background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior:none;}
.hidden{display:none!important;}
/* ── Dashboard ── */
.dashboard{min-height:100vh;background:var(--bg);display:flex;flex-direction:column;}
.dash-topbar{background:var(--panel);border-bottom:1px solid var(--line);padding:20px 32px;display:flex;align-items:center;justify-content:space-between;}
.dash-topbar h1{font-family:'Fraunces',serif;font-size:22px;font-weight:700;letter-spacing:-0.02em;}
.dash-body{flex:1;padding:32px;max-width:1200px;width:100%;margin:0 auto;padding-bottom:56px;}
.dash-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.dash-section-header h2{font-family:'Fraunces',serif;font-size:16px;font-weight:600;}
.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;}
.project-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 16px 0;cursor:pointer;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column;gap:6px;}
.project-card:hover{box-shadow:0 4px 20px rgba(0,0,0,.09);transform:translateY(-1px);}
.project-card-name{font-family:'Fraunces',serif;font-size:15px;font-weight:600;}
.project-card-meta{font-size:11px;color:var(--ink-soft);}
.project-card-date{font-size:10px;color:var(--ink-faint);}
.project-card-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:2px;margin-top:10px;padding:8px 0 10px;border-top:1px solid var(--line-soft);}
.card-tool-btn{background:transparent;border:none;font-family:inherit;font-size:10px;color:var(--ink-faint);cursor:pointer;padding:5px 9px;border-radius:4px;text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;gap:5px;}
.card-tool-btn:hover{background:var(--bg);color:var(--ink);}
.card-tool-btn.danger:hover{background:rgba(200,85,61,.08);color:var(--accent);}
.dash-empty{text-align:center;padding:80px 20px;color:var(--ink-faint);}
.dash-empty h3{font-family:'Fraunces',serif;font-size:20px;margin-bottom:10px;color:var(--ink-soft);}
.dash-empty p{font-size:12px;margin-bottom:24px;}
/* ── Modal ── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(2px);padding:20px;}
.modal{background:var(--panel);border-radius:12px;width:100%;max-width:620px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.22);}
.modal-header{padding:20px 24px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;}
.modal-header h2{font-family:'Fraunces',serif;font-size:18px;font-weight:600;}
.modal-close{background:transparent;border:none;font-size:22px;cursor:pointer;color:var(--ink-soft);padding:2px 8px;border-radius:4px;}
.modal-body{padding:20px 24px;}
.modal-footer{padding:14px 24px 20px;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center;}
.modal-input{flex:1;padding:9px 12px;font-family:inherit;font-size:13px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--ink);outline:none;}
.modal-input:focus{border-color:var(--ink);}
.modal-create-btn{background:var(--ink);color:var(--bg);border:none;padding:9px 20px;border-radius:6px;font-family:inherit;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;white-space:nowrap;}
.readonly-banner{background:var(--ink);color:var(--bg);text-align:center;padding:9px;font-size:11px;letter-spacing:.04em;flex-shrink:0;}
.readonly-banner a{color:#aaa;}
/* ── App shell ── */
#appScreen{display:flex;flex-direction:column;height:100vh;height:100dvh;}
.app{display:grid;grid-template-columns:410px 1fr;flex:1;overflow:hidden;transition:grid-template-columns .25s ease;}
.app.sidebar-collapsed{grid-template-columns:0 1fr;}
.app.sidebar-collapsed .sidebar{transform:translateX(-100%);}
.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;transition:transform .25s ease;}
.sidebar-toggle{background:var(--panel);border:1px solid var(--line);border-radius:5px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);cursor:pointer;padding:0;flex-shrink:0;font-size:18px;line-height:1;}
.sidebar-toggle:active{background:var(--ink);color:var(--bg);border-color:var(--ink);}
.back-to-dash{background:transparent;border:none;color:var(--ink-faint);font-family:inherit;font-size:10px;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;padding:0;margin-bottom:8px;display:block;text-align:left;}
.back-to-dash:hover{color:var(--ink);}
.brand{padding:14px 24px;border-bottom:1px solid var(--line);}
.brand h1{font-family:'Fraunces',serif;font-weight:600;font-size:18px;letter-spacing:-.01em;margin-bottom:10px;}
.project-name{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 10px;font-family:'Fraunces',serif;font-size:14px;font-weight:600;color:var(--ink);outline:none;}
.project-name:focus{border-color:var(--ink);}
.project-name::placeholder{color:var(--ink-faint);font-style:italic;font-weight:400;}
.project-name-label{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.12em;display:block;margin-bottom:4px;}
.controls{padding:11px 24px;border-bottom:1px solid var(--line);}
.control-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.control-row:last-child{margin-bottom:0;}
.control-row label{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);}
.seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:6px;overflow:hidden;}
.seg button{background:transparent;border:none;padding:5px 10px;font-family:inherit;font-size:10px;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.08em;}
.seg button.active{background:var(--ink);color:var(--bg);}
.curves-list{flex:1;overflow-y:auto;padding:8px 12px 52px;-webkit-overflow-scrolling:touch;}
.curves-list::-webkit-scrollbar{width:6px;}
.curves-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}
.curves-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 8px;gap:6px;}
.curves-header h2{font-family:'Fraunces',serif;font-size:14px;font-weight:600;}
.curves-header-actions{display:flex;gap:6px;}
.add-btn{background:var(--ink);color:var(--bg);border:none;padding:7px 12px;border-radius:5px;font-family:inherit;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;}
.add-btn.secondary{background:var(--bg);color:var(--ink);border:1px solid var(--line);}
.add-btn:active{transform:scale(.96);}
/* ── Curve cards ── */
.curve-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-bottom:7px;overflow:hidden;}
.curve-card.hidden-curve{opacity:.5;}
.curve-card.is-baseline{border-left:3px solid var(--ink);}
.curve-card.is-co{border-left:3px solid var(--accent);}
.curve-card.is-actual{border-left:3px solid var(--actual);}
/* Head row: [▲▼] [swatch] [name] [badge] ... [▾] [eye] [del] */
.curve-head{display:flex;align-items:center;gap:5px;padding:9px 8px 9px 8px;}
.card-reorder{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0;margin-right:3px;}
.reorder-btn{background:transparent;border:none;color:var(--ink-faint);cursor:pointer;padding:3px 6px;font-size:13px;line-height:1;border-radius:3px;min-width:24px;min-height:22px;display:flex;align-items:center;justify-content:center;}
.reorder-btn:hover:not([disabled]){color:var(--ink);background:var(--bg);}
.reorder-btn[disabled]{opacity:.2;cursor:default;}
.swatch{width:13px;height:13px;border-radius:3px;flex-shrink:0;cursor:pointer;border:1px solid rgba(0,0,0,.1);}
.curve-name{flex:1;background:transparent;border:none;font-family:'Fraunces',serif;font-size:13px;font-weight:600;color:var(--ink);padding:2px 0;border-bottom:1px solid transparent;outline:none;min-width:0;}
.curve-name:focus{border-bottom-color:var(--ink-faint);}
.type-badge{display:inline-block;font-size:9px;text-transform:uppercase;letter-spacing:.1em;padding:2px 5px;border-radius:3px;background:var(--bg);color:var(--ink-soft);flex-shrink:0;}
.type-badge.actual{background:rgba(61,124,92,.1);color:var(--actual);}
.icon-btn{background:transparent;border:none;cursor:pointer;padding:5px;color:var(--ink-faint);border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.icon-btn:active{color:var(--ink);}
.collapse-btn{background:transparent;border:none;color:var(--ink-faint);cursor:pointer;padding:5px 8px;font-size:16px;line-height:1;border-radius:3px;flex-shrink:0;min-width:30px;min-height:30px;display:flex;align-items:center;justify-content:center;}
.collapse-btn:hover{color:var(--ink);}
/* Style row: below name, inside curve-body */
.curve-style-row{display:flex;align-items:center;gap:6px;padding:6px 0 8px;border-bottom:1px solid var(--line-soft);margin-bottom:8px;}
.curve-style-row label{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);flex-shrink:0;}
.mini-seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:4px;overflow:hidden;}
.mini-seg button{background:transparent;border:none;padding:3px 7px;font-family:inherit;font-size:9px;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;}
.mini-seg button.active{background:var(--ink);color:var(--bg);}
/* Card body */
.curve-body{padding:0 10px 10px 10px;}
.curve-card.is-collapsed .curve-body,.curve-card.is-collapsed .curve-notes{display:none;}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 10px;margin-bottom:6px;}
.field{display:flex;flex-direction:column;gap:3px;min-width:0;}
.field label{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);}
.field input,.field select{font-family:inherit;font-size:12px;padding:5px 7px;background:var(--bg);border:1px solid var(--line);border-radius:4px;color:var(--ink);outline:none;width:100%;min-width:0;}
.field input[type="date"]{-webkit-appearance:none;appearance:none;font-size:11px;}
.field input:focus,.field select:focus{border-color:var(--ink);}
.working-days{display:flex;gap:3px;margin:6px 0;}
.working-days-ext{display:flex;gap:3px;margin:6px 0 8px;}
.day-col{display:flex;flex-direction:column;align-items:stretch;gap:2px;flex:1;}
.day-hrs-input{width:100%;font-family:inherit;font-size:10px;padding:2px 2px;background:var(--bg);border:1px solid var(--line);border-radius:3px;color:var(--ink);outline:none;text-align:center;}
.day-hrs-input:focus{border-color:var(--ink);}
.day-pill{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:5px 0;font-family:inherit;font-size:10px;color:var(--ink-faint);cursor:pointer;text-align:center;text-transform:uppercase;user-select:none;}
.day-pill.on{background:var(--ink);color:var(--bg);border-color:var(--ink);}
.summary-line{padding:6px 8px;background:var(--bg);border-radius:4px;font-size:11px;color:var(--ink-soft);display:flex;justify-content:space-between;margin-top:6px;}
.summary-line .v{font-family:'Fraunces',serif;font-weight:600;color:var(--ink);}
/* Embedded actuals */
.embedded-actuals{margin-top:10px;border-top:2px solid var(--line-soft);padding-top:8px;}
.embedded-actuals-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.embedded-actuals-head span{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);flex:1;}
.emb-collapse-btn{background:transparent;border:none;color:var(--ink-faint);cursor:pointer;padding:4px 6px;font-size:15px;line-height:1;border-radius:3px;min-width:26px;min-height:26px;display:flex;align-items:center;justify-content:center;}
.emb-collapse-btn:hover{color:var(--ink);}
.embedded-actuals-body{}
.embedded-actuals.is-emb-collapsed .embedded-actuals-body{display:none;}
/* Monthly entries */
.monthly-list{margin-top:8px;border-top:1px solid var(--line-soft);padding-top:8px;}
.month-hdr{display:grid;grid-template-columns:90px 1fr 1fr 1fr 28px;gap:4px;margin-bottom:3px;padding:0 2px;}
.month-hdr span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);text-align:center;}
.month-hdr span:first-child{text-align:left;}
.month-row-3{display:grid;grid-template-columns:90px 1fr 1fr 1fr 28px;gap:4px;margin-bottom:4px;align-items:center;}
.month-row-3 select{font-family:inherit;font-size:10px;padding:4px 3px;background:var(--bg);border:1px solid var(--line);border-radius:4px;color:var(--ink);outline:none;min-width:0;}
.month-row-3 input[type="number"]{font-family:inherit;font-size:11px;padding:4px 4px;background:var(--bg);border:1px solid var(--line);border-radius:4px;color:var(--ink);outline:none;width:100%;text-align:right;}
.month-row-3 input[type="number"]:focus{border-color:var(--ink);}
.add-month-btn{width:100%;background:var(--bg);border:1px dashed var(--line);color:var(--ink-soft);padding:5px;border-radius:4px;font-family:inherit;font-size:10px;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;margin-top:4px;}
.add-month-btn:active{background:var(--ink);color:var(--bg);}
/* Notes */
.curve-notes{border-top:1px solid var(--line-soft);}
.curve-notes summary{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);cursor:pointer;list-style:none;padding:6px 10px;}
.curve-notes summary::-webkit-details-marker{display:none;}
.curve-notes summary::before{content:'▸ ';}
details.curve-notes[open] summary::before{content:'▾ ';}
.notes-textarea{width:100%;padding:8px 10px;font-family:inherit;font-size:11px;background:var(--bg);border:none;border-top:1px solid var(--line-soft);color:var(--ink);resize:none;min-height:40px;overflow:hidden;outline:none;line-height:1.5;display:block;}
.notes-textarea:focus{background:var(--panel);}
.empty{text-align:center;padding:30px 20px;color:var(--ink-faint);}
/* ── Main area ── */
.main{display:flex;flex-direction:column;overflow:hidden;}
.topbar{padding:10px 20px;border-bottom:1px solid var(--line);background:var(--panel);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;flex-shrink:0;}
.topbar-left{display:flex;align-items:center;gap:10px;min-width:0;}
.topbar-left h2{font-family:'Fraunces',serif;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topbar-meta{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;}
.topbar-right{display:flex;gap:7px;align-items:center;flex-shrink:0;}
.tool-btn{background:transparent;border:1px solid var(--line);padding:6px 11px;border-radius:5px;font-family:inherit;font-size:10px;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;}
.tool-btn:active,.tool-btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink);}
.export-wrap{position:relative;}
.export-menu{position:absolute;top:calc(100% + 4px);right:0;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.1);overflow:hidden;z-index:200;min-width:155px;}
.export-menu button{display:block;width:100%;background:transparent;border:none;padding:10px 14px;font-family:inherit;font-size:11px;color:var(--ink);cursor:pointer;text-align:left;border-bottom:1px solid var(--line-soft);}
.export-menu button:last-child{border-bottom:none;}
.export-menu button:hover{background:var(--bg);}
/* ── Tabs ── */
.tabs{display:flex;border-bottom:1px solid var(--line);background:var(--panel);padding:0 14px;flex-shrink:0;}
.tab-button{background:transparent;border:none;padding:11px 16px;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.1em;border-bottom:2px solid transparent;transition:all .15s ease;}
.tab-button.active{color:var(--ink);border-bottom-color:var(--ink);}
.tab-button:hover{color:var(--ink);}
.tab-content{display:none;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.tab-content.active{display:flex;flex-direction:column;}
/* ── Chart ── */
.chart-wrap{flex:1;padding:14px 20px;background:var(--bg);overflow:hidden;position:relative;min-height:280px;}
.chart-inner{background:var(--panel);border:1px solid var(--line);border-radius:10px;height:100%;position:relative;overflow:hidden;}
#chartSvg{width:100%;height:100%;display:block;touch-action:none;}
.grid-line{stroke:var(--line-soft);stroke-width:1;}
.axis-line{stroke:var(--line);stroke-width:1;}
.axis-label{font-family:'JetBrains Mono',monospace;font-size:10px;fill:#555;}
.axis-title{font-family:'JetBrains Mono',monospace;font-size:10px;fill:#444;text-transform:uppercase;letter-spacing:.1em;}
.legend{position:absolute;top:12px;left:64px;background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:11px;display:flex;flex-direction:column;gap:5px;backdrop-filter:blur(4px);max-width:200px;}
.legend-header{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;}
.legend-collapse-btn{background:none;border:none;cursor:pointer;font-size:11px;color:var(--ink-faint);padding:0 2px;line-height:1;flex-shrink:0;}
.legend-collapse-btn:hover{color:var(--ink);}
.legend-items{display:flex;flex-direction:column;gap:5px;max-height:160px;overflow-y:auto;overflow-x:hidden;}
.legend-items::-webkit-scrollbar{width:3px;}
.legend-items::-webkit-scrollbar-track{background:transparent;}
.legend-items::-webkit-scrollbar-thumb{background:var(--line);border-radius:2px;}
.legend.collapsed .legend-items{display:none;}
.legend.collapsed{padding:4px 10px;}
.legend-item{display:flex;align-items:center;gap:8px;cursor:pointer;}
.legend-item .dot{width:14px;height:3px;border-radius:2px;flex-shrink:0;}
.legend-item.dim{opacity:.4;}
.legend-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* ── Data tab ── */
.data-tab-body{padding:20px 24px 52px;display:flex;flex-direction:column;gap:18px;}
.data-section{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:16px 18px;}
.data-section h3{font-family:'Fraunces',serif;font-size:14px;font-weight:600;margin-bottom:14px;}
.currency-seg{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:6px;overflow:hidden;}
.currency-btn{background:transparent;border:none;padding:7px 12px;font-family:inherit;font-size:11px;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;}
.currency-btn.active{background:var(--ink);color:var(--bg);}
.rate-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.rate-cell{display:flex;flex-direction:column;gap:4px;}
.rate-cell label{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);}
.rate-cell input{padding:8px 10px;font-family:'Fraunces',serif;font-size:16px;font-weight:600;background:var(--panel);border:1px solid var(--line);border-radius:5px;color:var(--ink);outline:none;width:100%;text-align:right;}
.rate-cell input:focus{border-color:var(--ink);}
.data-field-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;}
.data-field-row:first-child{margin-top:0;}
.data-field-row label{font-size:11px;color:var(--ink-soft);white-space:nowrap;}
.contract-input-wrap{display:flex;align-items:center;gap:6px;}
.contract-sym{font-family:'Fraunces',serif;font-size:15px;color:var(--ink-soft);}
.contract-input{padding:7px 10px;font-family:'Fraunces',serif;font-size:15px;font-weight:600;background:var(--panel);border:1px solid var(--line);border-radius:5px;color:var(--ink);outline:none;width:140px;text-align:right;}
.contract-input:focus{border-color:var(--ink);}
.ot-table{width:100%;border-collapse:collapse;font-size:11px;}
.ot-table th{text-align:left;padding:6px 8px;background:var(--panel);border-bottom:1px solid var(--line);font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);}
.ot-table td{padding:7px 8px;border-bottom:1px solid var(--line-soft);color:var(--ink-soft);}
.ot-table td:first-child{font-weight:500;color:var(--ink);width:100px;}
.ot-table input{width:56px;padding:5px 7px;font-family:inherit;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:4px;color:var(--ink);outline:none;text-align:right;}
.ot-table input:focus{border-color:var(--ink);}
/* ── Stats tab ── */
.stats-tab-body{padding:20px 24px 52px;}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:12px;}
.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;break-inside:avoid;page-break-inside:avoid;}
.stat-card .label{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);margin-bottom:5px;}
.stat-card .value{font-family:'Fraunces',serif;font-size:20px;font-weight:600;color:var(--ink);line-height:1.2;}
.stat-card .meta{font-size:10px;color:var(--ink-soft);margin-top:4px;}
.stat-wide{grid-column:1/-1;}
/* ── Footer ── */
.site-footer{position:fixed;bottom:0;left:0;right:0;height:36px;background:var(--panel);border-top:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:20px;z-index:500;flex-shrink:0;}
.site-footer span{font-size:10px;color:var(--ink-faint);}
.site-footer a{font-size:10px;color:var(--ink-faint);text-decoration:none;cursor:default;}
.site-footer a:hover{color:var(--ink-soft);}
.footer-sep{font-size:10px;color:var(--line);user-select:none;}
.color-popup{position:fixed;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px;display:grid;grid-template-columns:repeat(6,1fr);gap:4px;box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:1000;}
.color-popup div{width:22px;height:22px;border-radius:3px;cursor:pointer;border:1px solid rgba(0,0,0,.1);}
@media print{
  #dashboardScreen,#templateModal,.readonly-banner,.sidebar,.topbar,.tabs,.site-footer,#deletePortfolioModal,.app-header{display:none!important;}
  .tab-content{display:none!important;}
  .tab-content.active{display:block!important;overflow:visible!important;height:auto!important;}
  .axis-label{fill:#333!important;}.axis-title{fill:#444!important;}
  .stats-tab-body{padding:16px!important;}
  .stats-grid{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:10px!important;}
  .stat-card{break-inside:avoid!important;page-break-inside:avoid!important;border:1px solid #999!important;}
  .stat-card .label{color:#555!important;}.stat-card .meta{color:#555!important;}
  .chart-wrap{height:75vh!important;padding:0!important;}
  .chart-inner{border:1px solid #999!important;}
  #appScreen{display:block!important;height:auto!important;overflow:visible!important;}
  .app{display:block!important;height:auto!important;overflow:visible!important;}
  .main{display:block!important;overflow:visible!important;}
  body,html{height:auto!important;overflow:visible!important;}
}
@media (max-width:900px){
  .app{grid-template-columns:1fr;grid-template-rows:auto 1fr;}
  .sidebar{max-height:45vh;}
}
/* ── Dashboard Project Cards (new tiered layout) ─────────────── */
.dash-section-title {
  font-family: Fraunces, Georgia, serif;
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-soft);
  margin-bottom: 12px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--line-soft);
}
.project-grid-row {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}
.project-card {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 16px;
  cursor: pointer;
  position: relative;
  transition: box-shadow 0.15s, border-color 0.15s;
  overflow: hidden;
}
.project-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.08); border-color: var(--ink-soft); }
.project-card.pc-expired { opacity: 0.65; cursor: default; }
.project-card.pc-archived { opacity: 0.8; }
.pc-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.pc-name { font-family: Fraunces, Georgia, serif; font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.3; flex: 1; }
.pc-badge { font-size: 9px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; padding: 2px 7px; border-radius: 8px; flex-shrink: 0; }
.pc-badge-owner   { background: var(--bg); color: var(--ink-soft); border: 1px solid var(--line); }
.pc-badge-collab  { background: #eef7f2; color: #3d7c5c; border: 1px solid #b8dfc9; }
.pc-badge-view    { background: #f0f0f0; color: #777; border: 1px solid #ddd; }
.pc-badge-archived { background: #f5f0e8; color: #8a7a5a; border: 1px solid #d5c9a8; }
.pc-meta   { font-size: 11px; color: var(--ink-soft); margin-bottom: 4px; }
.pc-role-note { font-size: 10px; color: var(--ink-faint); margin-bottom: 4px; display: flex; align-items: center; gap: 4px; }
.pc-updated { font-size: 10px; color: var(--ink-faint); }
.pc-actions { display: flex; gap: 6px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line-soft); }
.pc-action-btn { background: none; border: 1px solid var(--line); border-radius: 4px; padding: 4px 8px; font-size: 11px; cursor: pointer; color: var(--ink-soft); }
.pc-action-btn:hover { border-color: var(--ink-soft); color: var(--ink); }
.pc-action-delete:hover { border-color: var(--accent); color: var(--accent); }
.pc-expired-overlay { position: absolute; inset: 0; background: rgba(247,245,240,0.85); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }
.pc-expired-icon { font-size: 24px; }
.pc-expired-text { font-family: Fraunces, Georgia, serif; font-size: 14px; font-weight: 600; color: var(--ink); }
.pc-expired-sub  { font-size: 11px; color: var(--ink-soft); }
.dash-empty { padding: 60px 20px; text-align: center; color: var(--ink-soft); }
.dash-archived-section { margin-top: 0; }
.dash-archived-section summary { list-style: none; }
.dash-archived-section summary::-webkit-details-marker { display: none; }

/* ── Multi-page layout overrides (wrapper architecture) ── */
#appScreen{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;}
#dashboardScreen{flex:1;overflow-y:auto;min-height:0;}
#projectScreen{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;}
#projectScreen.hidden{display:none!important;}
#dashboardScreen.hidden{display:none!important;}

/* ── Server-side data layer: save status, version nudge, viewer mode ── */
.save-status{
  font-size:11px;color:var(--ink-faint);align-self:center;
  min-width:64px;text-align:right;white-space:nowrap;
  transition:color .2s;
}
.version-nudge{
  position:fixed;top:22%;left:50%;transform:translateX(-50%);
  background:var(--ink);color:#fff;font-size:14px;
  padding:14px 20px;border-radius:10px;z-index:9998;
  display:flex;align-items:center;gap:12px;
  box-shadow:0 10px 40px rgba(0,0,0,.32);
  border:1px solid rgba(255,255,255,.12);
  animation:vnPop .18s ease-out;
}
@keyframes vnPop{from{opacity:0;transform:translateX(-50%) translateY(-8px);}to{opacity:1;transform:translateX(-50%) translateY(0);}}
.version-nudge button{
  background:#fff;color:var(--ink);border:none;border-radius:5px;
  padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;
}
.version-nudge .vn-dismiss{background:transparent;color:#fff;text-decoration:underline;padding:5px 4px;font-weight:400;}
/* Viewer mode: hide editing affordances for read-only collaborators */
body.viewer-mode #saveBtn,
body.viewer-mode #addCurveBtn,
body.viewer-mode #addActualBtn,
body.viewer-mode #resetBtn,
body.viewer-mode #importBtn{display:none !important;}

/* ── Profile & Settings panel ── */
.prof-row{margin-bottom:14px;}
.prof-row label{display:block;font-size:11px;font-weight:600;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px;}
.prof-static{font-size:14px;color:var(--ink);padding:4px 0;}
.prof-grey{color:var(--ink-faint);}
.prof-toggle-row{display:flex;align-items:center;justify-content:space-between;}
.prof-toggle-row label{margin-bottom:0;}
.prof-toggle-row input[type=checkbox]{width:18px;height:18px;cursor:pointer;}
.prof-actions{display:flex;align-items:center;gap:12px;margin:14px 0 4px;}
.prof-hr{border:none;border-top:1px solid var(--line);margin:20px 0;}
.prof-section-title{font-size:12px;font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;}
.prof-plan{font-size:13px;color:var(--ink-soft);margin-bottom:20px;}
.prof-reset-btn{background:#fff;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s,color .15s;}
.prof-reset-btn:hover{background:var(--accent);color:#fff;}
.prof-reset-note{font-size:11px;color:var(--ink-faint);margin-top:8px;line-height:1.5;}

/* ── Trash bin cards ── */
.dash-trash-section .pc-trashed{opacity:.85;}
.pc-trashed{background:var(--panel);border:1px dashed var(--line);border-radius:10px;padding:14px;display:flex;flex-direction:column;justify-content:space-between;min-height:96px;}
.pc-trashed .pc-name{font-weight:600;font-size:14px;color:var(--ink-soft);margin-bottom:4px;}
.pc-trashed .pc-meta{font-size:11px;color:var(--ink-faint);}
.pc-trashed .pc-actions{display:flex;gap:8px;margin-top:12px;align-items:center;}
.pc-trashed .pc-action-btn{font-size:12px;padding:5px 10px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;color:var(--ink-soft);font-family:inherit;display:inline-flex;align-items:center;gap:4px;}
.pc-trashed .pc-action-btn:hover{border-color:var(--ink-soft);color:var(--ink);}
.pc-trashed .pc-action-delete:hover{border-color:var(--accent);color:var(--accent);}

/* ── Dashboard greeting + plan pill + plan banner ── */
.dash-greeting-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.dash-greeting{font-family:Fraunces,Georgia,serif;font-size:22px;color:var(--ink);font-weight:600;display:inline;}
.plan-pill{display:inline-block;margin-left:10px;font-size:11px;font-weight:700;letter-spacing:.03em;padding:3px 10px;border-radius:999px;vertical-align:middle;text-transform:uppercase;}
.plan-pill-free{background:var(--line-soft);color:var(--ink-soft);}
.plan-pill-premium{background:var(--accent);color:#fff;}
.plan-banner{background:#fbf3e9;border:1px solid #ecd9bf;color:#7a5a2e;font-size:12.5px;line-height:1.5;padding:10px 14px;border-radius:8px;margin:10px 0 18px;}
.plan-banner a{color:var(--accent);font-weight:600;text-decoration:none;white-space:nowrap;}
.plan-banner a:hover{text-decoration:underline;}

/* ── Per-project expiry countdown ── */
.pc-expiry{font-size:11px;color:var(--ink-soft);margin-top:6px;}
.pc-expiry-urgent{color:var(--accent);font-weight:600;}
.pc-expiry-up{color:var(--accent);text-decoration:none;font-weight:600;}
.pc-expiry-up:hover{text-decoration:underline;}

/* ── Collaboration tab ── */
.collab-tab-body{padding:24px 28px;overflow-y:auto;max-width:640px;}
.collab-loading{padding:24px;color:var(--ink-faint);font-size:13px;}
.collab-section{margin-bottom:26px;}
.collab-section h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:10px;}
.collab-sub{font-size:12.5px;color:var(--ink-faint);line-height:1.5;margin-bottom:10px;}
.collab-sharelink{display:flex;gap:8px;}
.collab-sharelink input{flex:1;padding:9px 12px;font-family:JetBrains Mono,monospace;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--ink);}
.collab-sharelink button,.collab-add button{padding:9px 16px;background:var(--ink);color:var(--bg);border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;}
.collab-people,.collab-requests{display:flex;flex-direction:column;gap:8px;}
.collab-person,.collab-request{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;}
.cp-name{font-size:14px;color:var(--ink);font-weight:500;}
.cp-role{font-size:11px;color:var(--ink-soft);background:var(--line-soft);padding:2px 8px;border-radius:999px;margin-left:8px;}
.cp-role.cp-owner{background:var(--accent);color:#fff;}
.cp-remove{font-size:12px;color:var(--ink-soft);background:none;border:1px solid var(--line);border-radius:6px;padding:5px 12px;cursor:pointer;font-family:inherit;}
.cp-remove:hover{border-color:var(--accent);color:var(--accent);}
.cr-actions{display:flex;gap:6px;align-items:center;}
.cr-actions select,.collab-add select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-family:inherit;font-size:12px;background:var(--panel);color:var(--ink);}
.cr-approve{background:var(--actual);color:#fff;border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;}
.cr-reject{background:none;border:1px solid var(--line);color:var(--ink-soft);border-radius:6px;padding:6px 12px;font-size:12px;cursor:pointer;font-family:inherit;}
.collab-add{display:flex;gap:8px;}
.collab-add input{flex:1;padding:9px 12px;font-size:13px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--ink);font-family:inherit;}
.collab-add-msg{font-size:12px;color:var(--ink-faint);margin-top:8px;min-height:16px;}
.collab-add-msg.err{color:var(--accent);}
.collab-log{display:flex;flex-direction:column;gap:6px;}
.collab-log-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px;}
.cl-detail{color:var(--ink);}
.cl-meta{color:var(--ink-faint);white-space:nowrap;font-size:11px;}

/* ── Notification items ── */
.notif-empty{padding:20px;font-size:12px;color:var(--ink-faint);text-align:center;}
.notif-item{padding:12px 16px;border-bottom:1px solid var(--line-soft);}
.notif-item.notif-unread{background:#fbf3e9;}
.notif-msg{font-size:13px;color:var(--ink);line-height:1.45;}
.notif-when{font-size:10.5px;color:var(--ink-faint);margin-top:3px;}
.notif-actions{display:flex;gap:6px;align-items:center;margin-top:8px;}
.notif-actions select{padding:5px 7px;border:1px solid var(--line);border-radius:6px;font-size:12px;font-family:inherit;}
.notif-open{font-size:12px;color:var(--accent);text-decoration:none;font-weight:600;}
.notif-open:hover{text-decoration:underline;}

/* Viewer mode: hide the Collaboration "add/manage" is gated server-side; also hide share button affordance label only */
body.viewer-mode #shareBtn{display:none;}

/* ── Collaboration polish: role-change dropdown + disabled states ── */
.cp-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cp-rolesel{font-size:11px;padding:3px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font-family:inherit;cursor:pointer;}
.collab-add button:disabled,.cr-approve:disabled,.notif-actions .cr-approve:disabled{opacity:.45;cursor:not-allowed;}
.collab-add select,.cr-actions select,.notif-actions select{cursor:pointer;}

/* ── Notification dismiss (×) ── */
.notif-item{position:relative;padding-right:30px;}
.notif-dismiss{position:absolute;top:8px;right:8px;width:18px;height:18px;line-height:16px;text-align:center;border:none;background:none;color:var(--ink-faint);font-size:15px;cursor:pointer;border-radius:4px;padding:0;}
.notif-dismiss:hover{background:var(--line-soft);color:var(--ink);}

/* ── Notification panel header actions ── */
.notif-header-actions{display:flex;align-items:center;gap:8px;}
.notif-close{border:none;background:none;color:var(--ink-faint);font-size:18px;line-height:1;cursor:pointer;padding:0 2px;border-radius:4px;}
.notif-close:hover{color:var(--ink);}


/* ── Unified app header (shared across dashboard + project) ── */
.app-header{background:var(--panel);border-bottom:1px solid var(--line);padding:14px 32px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.app-header-left{display:flex;align-items:center;gap:14px;min-width:0;}
#headerLogo{font-family:'Fraunces',serif;font-size:20px;font-weight:700;letter-spacing:-0.02em;color:var(--ink);cursor:pointer;white-space:nowrap;}
.header-back{background:none;border:1px solid var(--line);border-radius:6px;padding:6px 12px;font-size:13px;color:var(--ink-soft);cursor:pointer;font-family:inherit;white-space:nowrap;}
.header-back:hover{border-color:var(--accent);color:var(--accent);}
.header-divider{color:var(--ink-faint);font-size:16px;}
.header-project-name{font-family:'Fraunces',serif;font-size:16px;color:var(--ink);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw;}

/* ── Collaboration card author line ── */
.pc-author{font-size:11px;color:var(--ink-soft);margin-top:4px;font-weight:500;}

/* ── Admin impersonation banner ── */
#impersonationBanner{position:fixed;top:0;left:0;right:0;z-index:99999;background:#c8553d;color:#fff;text-align:center;font-size:13px;padding:7px 14px;font-weight:600;}
#impersonationBanner a{color:#fff;text-decoration:underline;margin-left:8px;}
body:has(#impersonationBanner){padding-top:32px;}

/* ── Dashboard search + sort ── */
.dash-search-wrap{position:relative;flex:1;min-width:140px;max-width:280px;}
.dash-search-wrap input{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit;background:var(--panel);color:var(--ink);}
.dash-sort-sel{padding:8px 10px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit;background:var(--panel);color:var(--ink);cursor:pointer;}

/* ── Notification preference checkboxes ── */
.prof-notif-grid{display:flex;flex-direction:column;gap:5px;margin-bottom:6px;}
.prof-notif-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);cursor:pointer;}
.prof-notif-row input[type=checkbox]{width:15px;height:15px;flex-shrink:0;cursor:pointer;}

/* ── Curve type label dropdown ── */
.type-label-sel{font-size:11px;padding:5px 8px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);font-family:inherit;cursor:pointer;width:100%;}
.type-label-sel:focus{outline:none;border-color:var(--accent);}

/* ── Misc Hours badge ── */
.type-badge.misc{background:rgba(140,100,60,.12);color:#7a5a30;}

/* ── Misc Hours instructional note ── */
.misc-note{font-size:11px;color:var(--ink-soft);background:var(--bg);border-left:3px solid var(--line);padding:8px 10px;border-radius:0 6px 6px 0;margin-bottom:10px;line-height:1.5;}

/* ── +Card modal branch buttons ── */

/* ── Baseline prompt working-day picker (reuse existing styles) ── */
#blWorkingDays,#acmWorkingDays{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:4px;}

/* ── +Card branch choice buttons (both identical: white, dark text, wraps) ── */
.card-choice-btn{display:block;width:100%;text-align:left;padding:14px 16px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-family:inherit;white-space:normal;}
.card-choice-btn:hover{border-color:var(--accent);background:var(--bg);}
.card-choice-btn .cc-title{display:block;font-size:14px;font-weight:600;color:var(--ink);}
.card-choice-btn .cc-desc{display:block;font-size:12px;color:var(--ink-soft);margin-top:4px;line-height:1.45;white-space:normal;}

/* ── Curve type dropdown row (below the curve name, full width) ── */
.curve-type-row{padding:0 8px 4px;margin-top:-2px;}

/* ── Manager collaboration role badge ── */
.cp-manager{background:rgba(100,60,180,.12);color:#5a2da0;font-weight:600;}

/* ── Enterprise Management header button ── */
.ent-mgmt-btn{display:inline-flex;align-items:center;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;text-decoration:none;background:rgba(184,134,11,.1);color:#b8860b;border:1px solid rgba(184,134,11,.2);white-space:nowrap;}
.ent-mgmt-btn:hover{background:rgba(184,134,11,.18);}

/* ── Enterprise button active state (when on /enterprise/) ── */
.ent-mgmt-btn--active{background:rgba(184,134,11,.25);border-color:rgba(184,134,11,.4);color:#96690a;}
