:root{--ink:#17231d;--muted:#69756e;--paper:#f4f1e9;--card:#fffdf7;--green:#1f6b4f;--lime:#d7eb80;--line:#d9ded7;--danger:#b54b3f;--shadow:0 22px 60px rgba(29,50,39,.12)}
*{box-sizing:border-box}html{font-family:Inter,"Noto Sans TC","Microsoft JhengHei",sans-serif;color:var(--ink);background:var(--paper)}body{margin:0;min-height:100vh;background:radial-gradient(circle at 10% 0,#fff 0,transparent 28%),var(--paper)}button,input{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}.hidden{display:none!important}
.topbar{height:76px;padding:0 clamp(24px,5vw,84px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(23,35,29,.1)}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-weight:850;font-size:21px;letter-spacing:.04em}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:var(--ink);color:var(--lime)}.top-actions{display:flex;gap:10px}
.button{border:0;border-radius:999px;background:var(--ink);color:#fff;padding:12px 20px;font-weight:750;cursor:pointer;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;gap:8px}.button:hover{transform:translateY(-1px)}.button:focus-visible{outline:4px solid var(--lime);outline-offset:3px}.button.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}.button.primary{background:var(--green)}.button.wide{width:100%;padding:16px}.shell{width:min(1440px,92vw);margin:0 auto}
.library{display:grid;grid-template-columns:1fr 1.1fr;gap:7vw;padding:8vh 0}.hero-copy{padding:5vh 0}.eyebrow{font-size:12px;font-weight:850;letter-spacing:.2em;text-transform:uppercase;color:var(--green);margin:0 0 16px}.hero-copy h1{font-family:Georgia,"Noto Serif TC",serif;font-size:clamp(48px,6vw,86px);line-height:1.02;letter-spacing:-.05em;margin:0}.hero-copy h1 em{font-weight:400;color:var(--green)}.hero-copy>p:last-child{max-width:520px;font-size:18px;line-height:1.8;color:var(--muted)}.library-panel,.panel{background:var(--card);border:1px solid rgba(23,35,29,.08);border-radius:28px;box-shadow:var(--shadow)}.library-panel{padding:34px}.section-heading{display:flex;align-items:end;justify-content:space-between}.section-heading h2,.panel h2{font-family:Georgia,"Noto Serif TC",serif;font-size:34px;margin:0}.count{color:var(--muted)}.song-list{margin-top:22px;display:grid;gap:10px}.song-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;padding:17px 18px;border:1px solid var(--line);border-radius:18px;background:#fff}.song-card h3{margin:0 0 5px;font-size:17px}.song-card p,.empty{margin:0;color:var(--muted);font-size:14px}.song-card-actions{display:flex;gap:8px}.song-card .button{padding:9px 14px}.empty{padding:42px 10px;text-align:center;border:1px dashed var(--line);border-radius:18px}
.studio{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;padding:40px 0 80px}.steps{position:sticky;top:24px;align-self:start;display:grid;gap:5px}.step{display:grid;grid-template-columns:42px 1fr;gap:10px;text-align:left;align-items:center;padding:12px;border:0;border-radius:14px;background:transparent;color:var(--muted)}.step span{font-size:11px}.step.active{background:var(--ink);color:white}.step.done{color:var(--green)}.panel{padding:clamp(24px,4vw,56px);min-height:620px}.lede{color:var(--muted);line-height:1.7}.form-stack{display:grid;gap:22px;margin-top:32px}label{display:grid;gap:9px;font-weight:750}input{border:1px solid var(--line);background:#fff;border-radius:13px;padding:14px 16px;outline:0}input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(31,107,79,.13)}.file-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.drop-field{position:relative;min-height:190px;place-content:center;text-align:center;border:1.5px dashed #aab7af;border-radius:20px;background:#fbfcf8;cursor:pointer}.drop-field:hover{border-color:var(--green)}.drop-field input{position:absolute;inset:0;opacity:0;cursor:pointer}.drop-field small{color:var(--muted);font-weight:500}.file-icon{font-size:36px;color:var(--green)}.notice{margin-bottom:18px;border-radius:14px;padding:14px 18px;background:#e3f1d1;color:#214f38}.notice.error{background:#f8ded8;color:#7a2b24}.editor-toolbar,.footer-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0}.page-tabs,.chips{display:flex;gap:8px;flex-wrap:wrap}.page-tabs button,.chip{border:1px solid var(--line);background:white;border-radius:999px;padding:8px 13px}.page-tabs button.active{background:var(--ink);color:white}.page-stage{position:relative;width:100%;max-height:70vh;overflow:auto;margin-top:16px;border-radius:12px;background:#ddd}.page-stage>img{display:block;width:100%;height:auto}.row-box{position:absolute;border:2px solid #f0a51d;background:rgba(240,165,29,.12);left:0}.row-box.selected{border-color:var(--green);background:rgba(31,107,79,.12)}.row-box .tag{position:absolute;left:4px;top:4px;background:var(--ink);color:#fff;border-radius:999px;padding:3px 8px;font-size:12px}.resize-handle{position:absolute;left:0;width:100%;height:12px;cursor:ns-resize}.resize-handle.top{top:-6px}.resize-handle.bottom{bottom:-6px}.row-delete{position:absolute;right:5px;top:5px;border:0;border-radius:50%;background:var(--danger);color:white;width:26px;height:26px;cursor:pointer}.sequence-input{font-size:22px;letter-spacing:.08em}.sequence-preview{min-height:72px;margin-top:20px;display:flex;gap:6px;flex-wrap:wrap}.sequence-preview span,.anchor-list span{padding:8px 12px;border-radius:10px;background:#eef2eb}.anchor-now{margin:24px 0;display:grid;grid-template-columns:1fr auto;gap:6px;padding:22px;border-radius:18px;background:var(--ink);color:white}.anchor-now span{grid-column:1}.anchor-now strong{font-size:28px}.anchor-now time{grid-row:1/3;grid-column:2;align-self:center;font-size:28px;color:var(--lime)}#anchor-audio{width:100%;margin-top:22px}.anchor-controls{display:flex;gap:10px;flex-wrap:wrap}.anchor-list{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.final-card{text-align:center;padding:80px 20px}.spinner{width:54px;height:54px;margin:0 auto 24px;border:5px solid #dce5dc;border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite}.success-mark{display:grid;place-items:center;width:70px;height:70px;margin:0 auto 20px;border-radius:50%;background:var(--lime);font-size:36px}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:850px){.library{grid-template-columns:1fr}.studio{grid-template-columns:1fr}.steps{position:static;display:flex;overflow:auto}.step{grid-template-columns:auto}.step b{display:none}.file-grid{grid-template-columns:1fr}.top-actions .ghost{display:none}}
.site-footer{width:min(1440px,92vw);margin:0 auto;padding:30px 0 42px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:var(--muted);font-size:14px}.site-footer nav{display:flex;gap:20px}.site-footer a{color:inherit}.legal-page{min-height:100vh;padding:60px 0}.legal-card{width:min(860px,90vw);margin:0 auto;background:var(--card);border:1px solid var(--line);border-radius:28px;padding:clamp(28px,6vw,70px);box-shadow:var(--shadow)}.legal-card h1{font-family:Georgia,"Noto Serif TC",serif;font-size:42px;margin:0 0 12px}.legal-card h2{font-size:21px;margin:34px 0 10px}.legal-card p,.legal-card li{color:#4f5e56;line-height:1.85}.legal-card .back-link{display:inline-block;margin-top:30px;color:var(--green);font-weight:750}

/* Combined crop/order step and draft preview */
.editor-toolbar>div{display:flex;gap:10px}.rows-locked .row-box{border-color:var(--green);background:rgba(31,107,79,.08)}.sequence-section{margin-top:42px;padding-top:34px;border-top:1px solid var(--line)}.sequence-section h3{font-family:Georgia,"Noto Serif TC",serif;font-size:28px;margin:0}.row-previews{display:grid;gap:12px;margin-top:24px}.row-preview{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;margin:0;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff}.row-preview>span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--ink);color:white;font-weight:800}.row-preview img{display:block;width:100%;height:auto;border-radius:8px}.preview-frame{display:block;width:100%;aspect-ratio:16/9;margin-top:26px;border:1px solid var(--line);border-radius:18px;background:#08100c}.preview-actions{justify-content:flex-end;flex-wrap:wrap}

/* TV player */
.tv-body{background:#08100c;color:#f8f6ed;overflow:hidden}.tv-safe{position:fixed;inset:5vh 5vw}.tv-header{display:flex;justify-content:space-between;align-items:center}.tv-title{font-family:Georgia,"Noto Serif TC",serif;font-size:clamp(36px,4vw,72px);margin:0}.tv-status{color:#aebbb4}.tv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2vw;margin-top:6vh}.tv-song{min-height:20vh;border:2px solid #2d3c34;border-radius:2vw;padding:2vw;background:#101d16;color:white;text-align:left}.tv-song h2{font-size:2vw;margin:0 0 1vh}.tv-song:focus{outline:7px solid var(--lime);outline-offset:6px;background:#183b2b}.player-viewport{position:fixed;inset:0;background:white;overflow:hidden}.score-image,.score-layer{position:absolute;left:10vw;top:25vh;width:80vw;height:auto;will-change:transform}.score-layer{overflow:visible}.score-layer img{position:absolute;left:0;width:100%;height:auto}.player-hud{position:fixed;left:5vw;right:5vw;bottom:4vh;display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-radius:18px;background:rgba(8,16,12,.9);color:white;transition:opacity .3s}.player-buttons{display:flex;gap:12px}.tv-button{font-size:22px;padding:13px 24px;border:2px solid #4b5b52;border-radius:999px;background:#17231d;color:#fff}.tv-button:focus{outline:6px solid var(--lime);outline-offset:4px}.player-time{font-variant-numeric:tabular-nums;font-size:24px}.loading-screen{position:fixed;inset:0;display:grid;place-items:center;background:#08100c;color:white;text-align:center}.loading-screen h1{font-size:4vw}.loading-screen p{color:#aebbb4}

/* Six-step studio, per-row anchors, and compact shared player controls */
.button.danger{background:var(--danger)}.button:disabled{opacity:.45;cursor:not-allowed;transform:none}.anchor-toolbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;padding:8px 0;background:var(--card)}.anchor-toolbar time{font-size:24px;font-variant-numeric:tabular-nums;color:var(--green);font-weight:800}#anchor-audio{width:100%;margin:0 0 14px}.anchor-rows{display:grid;gap:10px}.anchor-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff}.anchor-row.anchored{background:#f1f7ed}.anchor-row-label{display:grid;text-align:center}.anchor-row-label b{font-size:20px}.anchor-row-label small{color:var(--muted)}.anchor-row img{display:block;width:100%;max-height:150px;object-fit:contain;object-position:left center}.anchor-row .button{min-width:132px}.preview-frame{margin-top:0;border-radius:12px}.player-hud{left:0;right:0;bottom:0;min-height:42px;justify-content:center;gap:24px;padding:5px 16px;border-radius:0;background:rgba(8,16,12,.88)}.player-buttons{gap:8px}.tv-button{font-size:15px;padding:6px 16px;border-width:1px}.tv-button:focus{outline-width:4px;outline-offset:2px}.player-time{font-size:15px}
@media(max-width:700px){.anchor-row{grid-template-columns:48px minmax(0,1fr)}.anchor-row .button{grid-column:2;justify-self:end}.top-actions{gap:6px}.top-actions .button{padding:9px 12px}}

/* Keep tall crops as readable as short crops; never shrink to a height cap. */
.anchor-row{grid-template-columns:64px minmax(0,1fr) 144px}
.anchor-row img{height:auto;max-height:none}
.anchor-row-action{display:grid;justify-items:center;gap:8px;min-width:0}
.anchor-row-action .button{width:100%;min-width:0}
.anchor-row-action time{font-size:14px;font-variant-numeric:tabular-nums;color:var(--muted)}
/* Controls occupy their own row, outside the clipped scrolling score. */
.player-layout{position:fixed;inset:0;display:flex;flex-direction:column;background:white}
.player-controls-area{flex:none;display:flex;justify-content:center;padding:12px 5vw;background:white}
.player-layout .player-hud{position:static;inset:auto;width:auto;max-width:100%;flex-wrap:wrap;gap:12px;padding:6px 12px;border-radius:999px}
.player-layout .player-viewport{position:relative;inset:auto;flex:1;min-height:0;width:100%}
.player-layout .score-image,.player-layout .score-layer{left:10%;top:25%;width:80%}
@media(max-width:700px){.anchor-row{grid-template-columns:48px minmax(0,1fr)}.anchor-row-action{grid-column:2;justify-self:end;width:144px}.anchor-row-action .button{grid-column:auto}.player-controls-area{padding:10px}.player-layout .player-hud{gap:8px}.player-layout .tv-button{padding:6px 10px}}

/* Manual row drawing and occurrence-specific rectilinear masks */
.page-stage.drawing-row{cursor:crosshair;outline:4px solid var(--lime)}
.mask-rows{display:grid;gap:18px}.mask-card{padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff}.mask-card header{display:flex;align-items:center;gap:12px;margin-bottom:10px}.mask-card header b{font-size:18px}.mask-card header span{color:var(--muted)}.mask-stage{position:relative;line-height:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.mask-stage img{display:block;width:100%;height:auto}.mask-stage svg{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}.mask-polygon{fill:rgba(220,224,222,.78);stroke:#8fa49a;stroke-width:2.5;vector-effect:non-scaling-stroke}.mask-drawing{fill:none;stroke:#f0a51d;stroke-width:2.5;vector-effect:non-scaling-stroke}.mask-point{fill:#d7eb80;stroke:#17231d;stroke-width:2;vector-effect:non-scaling-stroke;cursor:move}.mask-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.mask-actions .button{padding:8px 13px;font-size:14px}
