:root{color:#1c1c1e;background:#f4f6fa;font-family:-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif}body{margin:0}main.card{background:#fff;border-radius:14px;max-width:420px;margin:8vh auto;padding:24px;box-shadow:0 2px 12px #0001}main.wide{max-width:1100px;margin:24px auto;padding:0 16px}h1{margin:0 0 16px;font-size:1.3rem}form{gap:12px;display:grid}label{color:#555;gap:6px;font-size:.9rem;display:grid}input{border:1px solid #ccd;border-radius:8px;padding:10px 12px;font-size:1.05rem}button{color:#fff;cursor:pointer;background:#1f5fbf;border:0;border-radius:8px;padding:10px 14px;font-size:1rem}button.ghost{color:#1f5fbf;background:#eef2f9}button:disabled{opacity:.5}.err{color:#c62828;margin:0}.ok{color:#2e7d32}.hint{color:#777;font-size:.85rem}.note{background:#fff8e1;border-radius:8px;padding:8px 12px}.row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.between{justify-content:space-between}label.file,label.check{color:#1c1c1e;align-items:center;gap:6px;display:inline-flex}table{border-collapse:collapse;background:#fff;width:100%}th,td{text-align:left;border-bottom:1px solid #eee;padding:8px;font-size:.9rem}td.acts{flex-wrap:wrap;gap:6px;display:flex}td.acts button{padding:6px 10px;font-size:.85rem}*{box-sizing:border-box}.app{background:#fff;max-width:560px;min-height:100vh;margin:0 auto;padding-bottom:72px}header.top{z-index:5;background:#fff;border-bottom:1px solid #eee;align-items:center;gap:10px;padding:12px 16px;display:flex;position:sticky;top:0}header.top h1{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:1.1rem;overflow:hidden}a.back{color:#1f5fbf;padding:0 4px;font-size:1.6rem;line-height:1;text-decoration:none}.pad{padding:14px 16px}.muted{color:#777}.small{font-size:.8rem}.stack{gap:10px;display:grid}.tabbar{padding-bottom:env(safe-area-inset-bottom);z-index:10;background:#fff;border-top:1px solid #ddd;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{text-align:center;color:#666;flex:1;padding:14px 0;font-size:.95rem;text-decoration:none}.tabbar a.on{color:#1f5fbf;font-weight:700}.bookcard{color:inherit;border:1px solid #e3e7ef;border-radius:12px;margin-bottom:10px;padding:14px;text-decoration:none;display:block}.bookcard .title{word-break:keep-all;margin-bottom:2px;font-weight:700}.bar{background:#eef2f9;border-radius:4px;height:8px;margin:10px 0 6px;overflow:hidden}.bar i{background:#1f5fbf;height:100%;display:block}.sec h2{color:#333;word-break:keep-all;margin:18px 0 8px;font-size:.95rem}.pages{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px;display:grid}.pg{color:#333;border:1.5px solid #c9d3e6;border-radius:10px;justify-content:center;align-items:center;height:44px;font-weight:600;text-decoration:none;display:flex;position:relative}.pg.part{background:#e3edfc;border-color:#9fbbe8}.pg.done{color:#fff;background:#1f5fbf;border-color:#1f5fbf}.pg sup{color:#fff;background:#d9443b;border-radius:9px;padding:1px 5px;font-size:.7rem;position:absolute;top:-6px;right:-6px}.legend{align-items:center;gap:6px;font-size:.8rem;display:flex}.legend .pg{border-radius:4px;width:18px;height:14px;display:inline-block}ul.marks{margin:0;padding:0;list-style:none}ul.marks li{border-bottom:1px solid #f0f0f0;align-items:center;gap:10px;padding:10px 0;display:flex}ul.marks .no{width:56px;font-weight:700}button.ox{color:#888;background:#f1f3f7;width:52px;height:44px;padding:0;font-size:1.2rem;font-weight:800}button.ox.o.on{color:#fff;background:#1f5fbf}button.ox.x.on{color:#fff;background:#d9443b}ul.marks .sol{text-align:right;flex:1}ul.marks .sol a{color:#1f5fbf;font-weight:600;text-decoration:none}.withsave{padding-bottom:90px}.savebar{padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #ddd;position:fixed;bottom:0;left:0;right:0}.savebar button{width:100%;max-width:528px;margin:0 auto;padding:14px;font-size:1.05rem;display:block}.pager{justify-content:space-between;margin:18px 0;display:flex}.pager a{color:#1f5fbf;text-decoration:none}figure{margin:0 0 18px}figcaption{margin-bottom:6px;font-weight:700}img.shot{border:1px solid #eee;border-radius:8px;max-width:100%;height:auto;display:block}.badge{color:#fff;border-radius:10px;padding:3px 8px;font-size:.8rem}.badge.O{background:#1f5fbf}.badge.X{background:#d9443b}.wrongcard{color:inherit;border:1px solid #eee;border-radius:10px;margin-bottom:10px;padding:10px;text-decoration:none;display:block}.wrongcard img{object-fit:contain;object-position:left top;max-width:100%;max-height:120px;margin-top:6px;display:block}.adminnav{border-bottom:1px solid #dde;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:12px;padding:10px 0;display:flex}.adminnav a{color:#555;text-decoration:none}.adminnav a.on{color:#1f5fbf;font-weight:700}.adminnav button{margin-left:auto}.panel{background:#fff;border-radius:10px;margin-bottom:16px;padding:12px 16px}.panel h2{margin:4px 0 8px;font-size:1rem}button.small{padding:5px 10px;font-size:.85rem}.assign{flex-wrap:wrap;align-items:center;gap:8px;display:flex}label.inline{align-items:center;gap:6px;display:inline-flex}label.inline input{width:90px}.review{grid-template-columns:220px 1fr;align-items:start;gap:16px;display:grid}.review aside{background:#fff;border-radius:10px;max-height:92vh;padding:10px;position:sticky;top:8px;overflow:auto}.itemlist{margin:8px 0 0;padding:0;list-style:none}.itemlist li{cursor:pointer;border-radius:6px;padding:6px 8px;font-size:.9rem}.itemlist li.open{border-left:3px solid #d9443b}.itemlist li.on{background:#e3edfc}.editor{background:#fff;border-radius:10px;padding:12px}.panes{grid-template-columns:1fr 1fr;gap:12px;display:grid}.panes h3{margin:6px 0;font-size:.95rem}.pagebox{-webkit-user-select:none;user-select:none;border:1px solid #ccd;line-height:0;position:relative}.pagebox img{width:100%;height:auto;display:block}.pagebox svg{cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.pagebox rect.old{fill:#d9443b22;stroke:#d9443b;stroke-width:1.5px}.pagebox rect.new{fill:#1f5fbf22;stroke:#1f5fbf;stroke-width:2px}img.preview{border:1px solid #eee;max-width:100%;margin-top:6px}code{background:#eef2f9;border-radius:4px;padding:1px 4px}.video{background:#000;border-radius:8px;padding-top:56.25%;position:relative;overflow:hidden}.video iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.pick{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.pick input.n{width:56px;padding:5px 6px;font-size:.85rem}.pick select{max-width:220px}
