:root{--brand:#266854;--ink:#20352d;--muted:#617068;--bg:#f6f7f3;--line:#e1e7df;--soft:#edf3e9;--radius:22px;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #aa7915;outline-offset:3px}a{color:var(--brand)}button{border:0;border-radius:14px;min-height:46px;padding:11px 17px;background:var(--soft);color:var(--ink);font-weight:650}button:hover{filter:brightness(.97)}.primary{background:var(--brand);color:white}.danger{color:#a43025;background:#fcece7}.quiet{background:transparent}.small{font-size:.84rem;min-height:40px;padding:8px 12px}.wide{width:100%}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:14px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.muted{color:var(--muted)}.eyebrow{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;font-weight:750;color:var(--brand)}h1,h2,h3,p{margin-top:0}h1{font-size:2rem;letter-spacing:-.05em;line-height:1.15;margin-bottom:12px}h2{font-size:1.3rem;letter-spacing:-.03em;margin-bottom:16px}h3{font-size:1rem;margin-bottom:8px}p{line-height:1.55;margin-bottom:12px}.shell{max-width:1000px;margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;gap:10px}.brand{font-weight:750;font-size:1.15rem;display:flex;align-items:center;gap:10px}.brandmark{background:var(--brand);color:white;width:44px;height:44px;border-radius:15px;font:bold 42px Georgia;line-height:40px;text-align:center;position:relative}.brandmark span{color:#ddedb0;font-size:20px;position:absolute;right:5px;top:0;line-height:20px}.top-actions{display:flex;gap:4px;align-items:center}.avatar{border-radius:50%;background:#e4ead7;color:#3f5734;display:inline-grid;place-items:center;width:44px;height:44px;flex:none;font-weight:750;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.content{padding:12px 24px 118px}.welcome{display:flex;justify-content:space-between;align-items:flex-start;margin:10px 0 25px}.welcome p{margin:0}.hero{padding:26px;background:var(--brand);color:#fff;border-radius:26px;position:relative;overflow:hidden}.hero:after{content:'✦';font-size:220px;position:absolute;right:-30px;top:-60px;color:#ffffff0b;pointer-events:none}.hero .eyebrow{color:#d8edb4}.hero h2{font-size:1.7rem;margin:12px 0 8px}.hero .muted{color:#e0eae3}.hero button{background:#e3f0c4;color:#234637}.hero .ghost{background:#ffffff17;color:#fff}.pill{display:inline-flex;gap:5px;align-items:center;border-radius:30px;padding:6px 10px;font-size:.75rem;background:var(--soft);color:var(--brand);font-weight:650}.hero .pill{background:#ffffff20;color:#fff}.badge{background:#e4efcd;color:#355d2c}.warn{background:#fff1d6;color:#775410}.negative{background:#fae9e4;color:#963d33}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px}.section-head{display:flex;justify-content:space-between;align-items:center;margin:28px 0 12px;gap:10px}.section-head h2{margin:0}.metric{padding:18px;background:#fff;border:1px solid var(--line);border-radius:18px}.metric strong{display:block;font-size:1.6rem;margin-bottom:5px}.metric span{font-size:.78rem;color:var(--muted)}.item{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.item:last-child{border:0}.item .grow{flex:1;min-width:0}.item p{margin:3px 0 0;font-size:.86rem}.item h3{margin:0}.song-icon{width:44px;height:44px;border-radius:14px;background:#eff2e8;display:grid;place-items:center;color:var(--brand);flex:none}.clickable{cursor:pointer}.clickable:hover{background:#fafcf7}.card.clickable:hover{border-color:#b6c9b8}.bottom-nav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,1000px);display:flex;justify-content:space-around;gap:4px;background:#ffffffed;backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:10px 8px max(12px,env(safe-area-inset-bottom))}.bottom-nav button{background:transparent;padding:7px 8px;min-width:54px;display:grid;justify-items:center;gap:5px;color:var(--muted);font-size:.67rem;font-weight:650;min-height:56px}.bottom-nav button.active{background:var(--soft);color:var(--brand)}svg.icon{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.search{position:relative}.search input{padding-left:43px}.search svg{position:absolute;left:14px;top:15px;color:var(--muted)}input,select,textarea{width:100%;padding:13px 14px;border:1px solid #cad5c9;border-radius:13px;background:#fff;color:var(--ink);min-height:48px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #26685415}textarea{resize:vertical;min-height:110px;line-height:1.5}input[type=checkbox]{width:21px;min-height:21px;accent-color:var(--brand);flex:none}input[type=color]{padding:4px}label{display:grid;gap:7px;font-size:.86rem;font-weight:650}label.check{display:flex;align-items:center;font-weight:500}.hint{font-size:.8rem;line-height:1.5;color:var(--muted)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 20px}.filters select{width:auto;flex:1;min-width:120px}.chips{display:flex;gap:6px;flex-wrap:wrap}.empty{text-align:center;padding:36px 18px;color:var(--muted);border:1px dashed #cbd7c8;border-radius:20px;background:#ffffff80}.empty .emptyicon{font-size:2rem;display:block;margin-bottom:12px}.auth{max-width:430px;margin:6vh auto;padding:26px}.auth .brandmark{margin-bottom:30px;width:58px;height:58px;line-height:54px;font-size:54px}.auth h1{font-size:2.4rem}.auth form{margin-top:25px}.authfooter{font-size:.8rem;text-align:center;margin-top:22px;color:var(--muted)}.notice{border-radius:14px;padding:14px 16px;background:#edf2e8;font-size:.86rem;line-height:1.5}.notice.warn{background:#fff1d6;color:#775410}.offlinebar{background:#fbefd4;text-align:center;padding:10px 15px;font-size:.8rem}.error{background:#fae9e4;color:#963d33;border-radius:12px;padding:12px;margin:10px 0;font-size:.85rem}.dot{width:8px;height:8px;display:inline-block;border-radius:50%;background:#b45838;margin-left:3px}.dateblock{border-radius:13px;background:#eff2e8;min-width:50px;text-align:center;padding:10px 7px;color:var(--brand)}.dateblock strong{font-size:1.25rem;display:block}.dateblock span{font-size:.65rem;text-transform:uppercase}.divider{border:0;border-top:1px solid var(--line);margin:22px 0}.back{margin-bottom:12px;padding-left:0}.tabs{display:flex;gap:6px;background:#e9eee5;border-radius:15px;padding:4px;margin:15px 0}.tabs button{flex:1;background:transparent}.tabs .active{background:white;box-shadow:0 2px 5px #00000008}.chart{--font-size:19px;font-size:var(--font-size);padding:18px 0;line-height:1.6;overflow-wrap:anywhere}.chart-line{display:flex;flex-wrap:wrap;align-items:flex-end;margin-bottom:10px;white-space:pre-wrap}.chart-chunk{display:inline-flex;flex-direction:column;max-width:100%}.chord{font-size:.86em;color:var(--brand);font-weight:750;line-height:1.3;min-height:1.5em;padding-right:6px}.chord small{font-weight:500;font-size:.67em;padding-left:5px;color:#687868}.lyric{min-height:1.5em;white-space:pre-wrap}.section-label{text-transform:uppercase;letter-spacing:.12em;font-size:.68em;color:var(--muted);margin:22px 0 14px}.line-space{height:14px}.chart-tools{position:sticky;top:0;z-index:4;background:var(--bg);padding:10px 0;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.chart-tools select{width:auto}.chart-tools label{display:flex;align-items:center;gap:6px;font-size:.75rem}.atril .topbar,.atril .bottom-nav{display:none}.atril .content{padding-top:15px}.atril .chart{font-size:var(--font-size,25px)}.dark{--bg:#101c17;--ink:#edf2e9;--muted:#acbbae;--line:#34483a;--soft:#263e30;--brand:#c5e89e}.dark .card,.dark input,.dark select,.dark textarea{background:#17271e}.dark .chord small{color:#acbbae}.dark .primary{color:#122015}.dark .tabs{background:#24352b}.dark .tabs .active{background:#3c503e}.dark .bottom-nav{background:#17271e}.dark .topbar .brandmark{color:#17271e}dialog{border:1px solid var(--line);border-radius:25px;padding:0;max-width:620px;width:calc(100% - 24px);max-height:90dvh;background:var(--bg);color:var(--ink)}dialog::backdrop{background:#12261b85;backdrop-filter:blur(3px)}.modal-head{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--bg);z-index:2}.modal-head h2{margin:0}.modal-body{padding:22px}.modal-body form{display:grid;gap:16px}.editor-chart{font-family:ui-monospace,SFMono-Regular,monospace;font-size:.84rem;min-height:200px}.member-edit,.set-edit{background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;display:grid;gap:10px}.member-edit .row input{width:auto}.set-edit .grid2{gap:8px}#toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:#203c2e;color:#fff;padding:13px 20px;border-radius:14px;z-index:100;max-width:90%;display:none;font-size:.9rem}.skip{position:absolute;left:-1000px}.skip:focus{left:10px;top:10px;z-index:200;background:white;padding:12px}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.85rem}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px 8px;white-space:nowrap}th{font-size:.72rem;color:var(--muted);font-weight:650}.prewrap{white-space:pre-wrap}.form-actions{display:flex;gap:10px;position:sticky;bottom:0;padding-top:12px;background:var(--bg)}.event-layout{display:grid;gap:18px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media(min-width:760px){.content{padding:20px 40px 120px}.topbar{padding:25px 40px}.home-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:22px}.home-grid .section-head:first-child{margin-top:0}.hero{min-height:285px;display:flex;flex-direction:column;justify-content:center}.song-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.event-layout{grid-template-columns:1.2fr 1fr}.bottom-nav{border:1px solid var(--line);border-radius:22px 22px 0 0;width:600px}.welcome h1{font-size:2.5rem}}@media(max-width:380px){.content{padding:8px 16px 110px}.topbar{padding:18px 16px}.grid3{gap:7px}.metric{padding:12px}.hero{padding:22px}.grid2{grid-template-columns:1fr}.topbar .brand{font-size:1rem}}@media print{.topbar,.bottom-nav,.chart-tools,.back,.song-meta,.song-actions,dialog,#toast{display:none!important}.content{padding:0}.chart{color:#000}.chord{color:#000}.chart-line{break-inside:avoid}.card{border:0}}

body.dark{--brand:#c5e89e!important}.dark .song-icon,.dark .dateblock,.dark .member-edit,.dark .set-edit{background:#24352b}.dark .notice{background:#24352b}.dark .empty{background:#17271e}.atril .song-actions{display:none}.chart-chunk .lyric:empty{min-width:6px}
body{background:var(--bg);color:var(--ink)}.dark .chart-tools{background:var(--bg)}.dark .chart{color:var(--ink)}

[hidden]{display:none!important}.song-import{border:1px solid var(--line);border-radius:16px;background:var(--soft);padding:14px}.song-import summary{cursor:pointer;min-height:32px;font-weight:650}.import-body{padding-top:12px}.import-body p{margin:0}.import-original{white-space:pre-wrap;overflow-wrap:anywhere;max-height:200px;overflow:auto;font-size:12px}.import-chart{max-height:300px;overflow:auto;padding:12px;--font-size:18px}.import-body input[type=file]{max-width:100%;font-size:14px}.import-body .check{align-items:flex-start}.import-body input[type=checkbox]{flex-shrink:0}

.photo-picker{border-top:1px solid var(--line);padding-top:18px}.photo-preview{width:104px;height:104px;border-radius:50%;background:var(--soft);display:grid;place-items:center;overflow:hidden;color:var(--muted);font-size:14px}.photo-preview img{width:100%;height:100%;object-fit:cover}.photo-picker input[type=file]{font-size:14px;max-width:100%}.photo-picker p{margin:0}.photo-picker h3{margin:0}
